web-dev-qa-db-fra.com

Comment extraire un fichier .dmg sous Linux?

En tant qu'utilisateur Linux, je dois obtenir le contenu d'un fichier .dmg (image de disque Mac OSX) contenant un programme d'installation d'application.

J'ai essayé dmg2dir (qui nécessite dmg2img) qui a créé un fichier .img mais rien d'autre.

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

J'ai juste besoin des fichiers du fichier .dmg décompressés, je ne veux pas le monter.

Si vous êtes curieux, j'ai besoin de cela pour créer un environnement de développement portable à utiliser lors d'ateliers sur des ordinateurs qui ne peuvent pas être préparés à l'avance.

18
qubodup

Il suffit d'utiliser 7z x.

Dans le cas par exemple de texte Sublime, 7z x "Sublime Text 2.0.2.dmg" suffira à extraire tous les fichiers.

Dans d'autres cas, comme par exemple le JDK, vous devez faire face à une sorte de matryoshka.

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

Mais vous finirez par obtenir un dossier contenant les fichiers que vous recherchez.

30
qubodup

Parfois 7z ne fonctionnent pas correctement.

Utilisez https://sourceforge.net/projects/catacombae/files/HFSExplorer/0.23.1/ pour ces cas.

1
albfan

Sur le Mac, si le fichier dmg est une image d'un répertoire contenant tous les fichiers, créez un tgz du répertoire au lieu d'un fichier dmg et migrez-le.

#!/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
1
Dick.Guertin