Gibt es einen Befehl zum Installieren einer dmg

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.

filesagt, meine dmg-Datei ist eine VAX COFF executable.

Antworten (6)

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>.

Ich habe das mit gemacht Docker.dmgund ich hatte keine <image>.pkg, damit dit nicht funktioniert
meins ist <image>.appstatt <image>.pkgafter doing sudo hdiutil attach <image>.dmg, wie kann ich das dann machen?
@jack Wenn es eine .app in einer DMG gibt, können Sie sie normalerweise einfach nach /Applications ziehen/kopieren.

Sie sollten in der Lage sein, das zu mounten .dmgmit:

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 .appkopieren /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 /ApplicationsOrdner

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 .dmgDatei, 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 .dmgkann eine .appDatei oder eine .pkgDatei 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 .dmgeine .appDatei haben, die ausgeführt wird, um das Programm zu installieren, erneut etwas anderes tun müssen.

Dies funktioniert nur für dmgs, die betriebsbereite Apps enthalten, nicht für Pakete oder Installer-Apps.
@patrix kannst du mir einige Beispiele für Pakete und Installer-Apps geben, die ich testen kann, um die Antwort zu verfeinern?
Pakete sind einfach (enden auf .pkg), aber eine Installer-App sieht genauso aus wie eine echte
dadurch wird die Datei nicht getrennt.hdiutil: detach failed - No such file or directory
behebt es:sudo hdiutil unmount "$volume"/*.app
Ich wünschte, es gäbe eine Möglichkeit, dies ohne zu tunsudo
@NicholasDiPiazza Ich wünschte, Apple würde dies einfacher machen, indem es einen einzigen benutzerfreundlichen Standard bereitstellt und durchsetzt und Entwicklern Tools zur Verfügung stellt, mit denen sie ihre vorhandenen Installationsprogramme automatisch für die Verwendung des neuen Standards konvertieren können.

Du könntest es mit dem Befehl versuchen open disk://host.tld/image.dmg.

openhat nichts getan, einfach beenden, ohne Fehlermeldung.
Ja tut es. Ich habe es gerade getestet. Es wird nichts angezeigt, bis das Disk-Image vollständig gemountet wurde, also müssen Sie etwa eine Minute warten, bevor es in /Volumes erscheint. (Es funktioniert, wenn Sie ssh eingeben und eingeben open path/to/file.dmg. Ich glaube jedoch nicht, dass es disk://host.tld/funktioniert.)
Hilfreich, aber vielleicht nicht genau das, was das OP brauchte. Danke.
Ich fand, das 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).

Geben Sie hier die Bildbeschreibung ein.

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.

Sie können auch einfach auf die DMG-Datei doppelklicken, um sie zu öffnen. Bitte seien Sie auch genauer, was Sie mit "Terminal öffnen, in das Verzeichnis gehen, open -a/FileName.app schreiben und die Eingabetaste drücken" meinen, da scheinen einige Details zu fehlen.