Wie extrahiere ich eine .dmg-Datei in Linux?

16166
qubodup

Als Linux-Benutzer muss ich den Inhalt einer .dmg-Datei (Mac OSX Disk Image) abrufen, die ein Anwendungsinstallationsprogramm enthält.

Ich habe versucht dmg2dir(was erfordert dmg2img), was eine .img-Datei erstellt hat, aber sonst nichts.

$ sudo dmg2dir jdk-8u51-macosx-x64.dmg ==> Routines successfully accomplished. Ready!  ==> Prepare loop device...  ==> Mount block device...  Error looking up object for device /dev/disk/by-label/JDK\x208\x20Update\x2051 INTENSO openSUSE\x20Live\x20CD\x20GNOME dump Variable is empty. 

Ich brauche nur die Dateien aus der .dmg-Datei entpackt, ich möchte sie nicht mounten.

Wenn Sie neugierig sind, brauche ich dies, um eine tragbare Entwicklungsumgebung zu schaffen, die in Workshops auf Computern verwendet werden kann, die nicht im Voraus vorbereitet werden können.

16
Es ist ein Disk-Image. Wenn nicht jemandem die ganze Arbeit (was ich denke, 7z hat es getan hat) unternommen haben, Dateisystemleser in sein Programm zu schreiben, ist der einfachste Weg die Verwendung der Linux-Kernel-Dateisystemmodule zum Lesen der Daten. Was bedeutet, es zu montieren. Zan Lynx vor 8 Jahren 1

3 Antworten auf die Frage

26
qubodup

Verwenden Sie einfach 7z x.

Im Fall von Sublime-Text 7z x "Sublime Text 2.0.2.dmg"reicht es aus, alle Dateien zu extrahieren.

In anderen Fällen, wie zum Beispiel dem JDK, muss man sich mit einer Art Matroschka befassen.

$ 7z x jdk-8u51-macosx-x64.dmg $ cd JDK 8 Update 51/ $ 7z x JDK 8 Update 51.pkg $ 7z x Payload~ 

Aber irgendwann erhalten Sie einen Ordner mit den Dateien, nach denen Sie suchen.

Das Extrahieren von dmg-Dateien mit 7z scheint die ausführbaren Bits zu übersehen, wodurch extrahierte Anwendungen von DMGs dysfunktional werden. Kann verwandt sein: https://sourceforge.net/p/p7zip/bugs/113/ Motin vor 5 Jahren 0
1
albfan

Manchmal funktionieren 7z nicht richtig.

Verwenden Sie für diese Fälle https://sourceforge.net/projects/catacombae/files/HFSExplorer/0.23.1/

1
Dick.Guertin

Wenn das dmg auf dem Mac ein Abbild eines Verzeichnisses ist, das alle Dateien enthält, erstellen Sie ein tgz aus dem Verzeichnis anstelle eines dmg und migrieren Sie es.

#!/bin/bash if [ -d "$1" ]; then # $1 is the directory name tar -cf "$1.tar" "$1" || exit # First, create a tar-file gzip -n -S .gz "$1.tar" # Then ,gzip it to compress it. mv "$1.tar.gz" "$1.tgz" # Then rename it ti a .tgz echo "Created $PWD/$1.tgz" else echo "Not a directory" fi exit 0