I want to install a dmg file on a remote server. All I have is an ssh access. Since a DMG is a disk image, I tried to mount it, but mount does not seem to recognize its format.
file says my dmg file is a VAX COFF executable.
I want to install a dmg file on a remote server. All I have is an ssh access. Since a DMG is a disk image, I tried to mount it, but mount does not seem to recognize its format.
file says my dmg file is a VAX COFF executable.
First, mount the dmg image : hdiutil attach <image>.dmg
The image will be mounted to /Volumes/<image>. Mine contained a package which i installed with: sudo installer -package /Volumes/<image>/<image>.pkg -target /
Finally unmount the image: hdiutil detach /Volumes/<image>.
You should be able to mount the .dmg using:
hdiutil attach /path/to/file.dmg
And then copy its contents (which appears in /Volumes) where ever you like.
I had to mount and copy the .app to /Applications folder.
For Etcher.app:
First as @trojanfoe said :
sudo hdiutil attach /Users/janatac/Etcher-1.2.1.dmg
Then
sudo cp -R /Volumes/Etcher\ 1.2.1/Etcher.app /Applications
You then have your application in /Applications folder
Don't forget to unmount the volume :
sudo hdiutil unmount /Volumes/Etcher\ 1.2.1/
Got it working after reading instructions from a blog post.
If you want to script the install it requires a few more steps since the name of the .dmg file, the name of the Volume created, the name of the application, and the name of the device that needs to be detached can all be different. Plus they can have spaces in them.
Also a .dmg can have an .app file or a .pkg file in it and these require different behavior.
Here's a bash function to install a dmg from a remote URL:
# usage: installdmg https://example.com/path/to/pkg.dmg
function installdmg {
set -x
tempd=$(mktemp -d)
curl $1 > $tempd/pkg.dmg
listing=$(sudo hdiutil attach $tempd/pkg.dmg | grep Volumes)
volume=$(echo "$listing" | cut -f 3)
if [ -e "$volume"/*.app ]; then
sudo cp -rf "$volume"/*.app /Applications
elif [ -e "$volume"/*.pkg ]; then
package=$(ls -1 "$volume" | grep .pkg | head -1)
sudo installer -pkg "$volume"/"$package" -target /
fi
sudo hdiutil detach "$(echo "$listing" | cut -f 1)"
rm -rf $tempd
set +x
}
Note if your .dmg has an .app file that runs to install the program, then you will need to do something different again.
hdiutil: detach failed - No such file or directory
– Nicholas DiPiazza
Apr 09 '18 at 19:14
I wish Apple would make this easier by providing and enforcing a single easy to use standard and giving developers tools to automatically convert their existing installers to use the new standard.
– voutasaurus Apr 27 '18 at 22:21open path/to/file.dmg. I don't think disk://host.tld/ works though.)
– daviewales
Dec 05 '12 at 12:19
open -W </path/todmg> worked (it waits until the volume has actually appeared).
– gib
Jun 08 '20 at 10:20
After you've downloaded the.dmg file. By pressing the right button, the file must be mounted and opened with the same picture.DiskImageMounter(Default).
The. app file will then be shown. When the. app file appears, open the terminal and navigate to the write directory where the file is located. and type open -a/ExistingFileName.app in the command prompt, then press enter. This is how I use the macOS terminal to launch the.dmg file.
Docker.dmgand I had no<image>.pkgso that dit not work – Dimitri Kopriwa Oct 27 '19 at 15:56<image>.appinstead of<image>.pkgafter doingsudo hdiutil attach <image>.dmg, how can i do then? – jack Mar 27 '21 at 18:13