Risposte:
Innanzitutto, monta l'immagine dmg: sudo hdiutil attach <image>.dmg
L'immagine verrà montata su /Volumes/<image>
. Il mio conteneva un pacchetto che ho installato con:sudo installer -package /Volumes/<image>/<image>.pkg -target /
Infine smontare l'immagine: sudo hdiutil detach /Volumes/<image>
.
Ho dovuto montare e copiare la .app
a /Applications
cartella. Per Etcher.app:
Innanzitutto come diceva @trojanfoe:
sudo hdiutil attach /Users/janatac/Etcher-1.2.1.dmg
Poi
sudo cp -R /Volumes/Etcher\ 1.2.1/Etcher.app /Applications
Quindi hai la tua applicazione nella /Applications
cartella
Non dimenticare di smontare il volume:
sudo hdiutil unmount /Volumes/Etcher\ 1.2.1/
Ha funzionato dopo aver letto le istruzioni di un post sul blog .
Se si desidera eseguire lo script dell'installazione, sono necessari alcuni passaggi in più poiché il nome del .dmg
file, il nome del volume creato, il nome dell'applicazione e il nome del dispositivo che deve essere staccato possono essere tutti diversi. Inoltre possono avere spazi al loro interno.
Inoltre .dmg
può contenere un .app
file o un .pkg
file e questi richiedono comportamenti diversi.
Ecco una funzione bash per installare un dmg da un URL remoto:
# 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
}
Nota se hai .dmg
un .app
file che viene eseguito per installare il programma, dovrai fare di nuovo qualcosa di diverso.
hdiutil: detach failed - No such file or directory
Potresti provare il comando open disk://host.tld/image.dmg
.
open
non ha fatto nulla, basta uscire, senza messaggio di errore.
open path/to/file.dmg
. Non credo disk://host.tld/
Docker.dmg
e non ho fatto in<image>.pkg
modo che non funzionasse