Ich möchte eine dmg-Datei auf einem Remote-Server installieren. Ich habe nur einen ssh-Zugang. Da ein DMG ein Disk-Image ist, habe ich versucht, es zu mounten, aber mount scheint sein Format nicht zu erkennen.
file
sagt, meine dmg-Datei ist eine VAX COFF executable
.
Mounten Sie zuerst das dmg-Image:sudo hdiutil attach <image>.dmg
Das Bild wird in /Volumes/<image>
. Meins enthielt ein Paket, das ich installiert habe mit:sudo installer -package /Volumes/<image>/<image>.pkg -target /
Abschließend das Image unmounten: sudo hdiutil detach /Volumes/<image>
.
Sie sollten in der Lage sein, das zu mounten .dmg
mit:
hdiutil attach /path/to/file.dmg
Und kopieren Sie dann seinen Inhalt (der in erscheint /Volumes
), wo immer Sie möchten.
Ich musste den Ordner mounten und .app
kopieren /Applications
. Für Etcher.app:
Zuerst wie @trojanfoe sagte:
sudo hdiutil attach /Users/janatac/Etcher-1.2.1.dmg
Dann
sudo cp -R /Volumes/Etcher\ 1.2.1/Etcher.app /Applications
Sie haben dann Ihre Bewerbung im /Applications
Ordner
Vergessen Sie nicht, das Volume zu unmounten:
sudo hdiutil unmount /Volumes/Etcher\ 1.2.1/
Habe es nach dem Lesen der Anweisungen aus einem Blog-Post zum Laufen gebracht .
Wenn Sie die Installation per Skript ausführen möchten, sind einige weitere Schritte erforderlich, da der Name der .dmg
Datei, der Name des erstellten Volumes, der Name der Anwendung und der Name des Geräts, das getrennt werden muss, alle unterschiedlich sein können. Außerdem können sie Leerzeichen enthalten.
Auch ein .dmg
kann eine .app
Datei oder eine .pkg
Datei enthalten und diese erfordern ein anderes Verhalten.
Hier ist eine Bash-Funktion, um eine dmg von einer Remote-URL zu installieren:
# 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
}
Beachten Sie, dass Sie, wenn Sie .dmg
eine .app
Datei haben, die ausgeführt wird, um das Programm zu installieren, erneut etwas anderes tun müssen.
hdiutil: detach failed - No such file or directory
sudo hdiutil unmount "$volume"/*.app
sudo
Du könntest es mit dem Befehl versuchen open disk://host.tld/image.dmg
.
open
hat nichts getan, einfach beenden, ohne Fehlermeldung.open path/to/file.dmg
. Ich glaube jedoch nicht, dass es disk://host.tld/
funktioniert.)open -W </path/todmg>
hat funktioniert (es wartet, bis das Volumen tatsächlich erschienen ist).Nachdem Sie die.dmg-Datei heruntergeladen haben. Durch Drücken der rechten Taste muss die Datei mit demselben Bild gemountet und geöffnet werden. DiskImageMounter (Standard).
Das. app-Datei wird dann angezeigt. Wenn die. app-Datei erscheint, öffnen Sie das Terminal und navigieren Sie zum Schreibverzeichnis, in dem sich die Datei befindet. und geben Sie open -a/ExistingFileName.app in die Eingabeaufforderung ein und drücken Sie dann die Eingabetaste. So verwende ich das macOS-Terminal, um die .dmg-Datei zu starten.
Dimitri Kopriwa
Docker.dmg
und ich hatte keine<image>.pkg
, damit dit nicht funktioniertJack
<image>.app
statt<image>.pkg
after doingsudo hdiutil attach <image>.dmg
, wie kann ich das dann machen?kein Hang