web-dev-qa-db-ja.com

Linuxで.dmgファイルを抽出する方法は?

Linuxユーザーとして、アプリケーションインストーラーを含む.dmg(Mac OSXディスクイメージ)ファイルのコンテンツを取得する必要があります。

dmg2dirdmg2imgが必要)を試してみましたが、.imgファイルだけが作成されました。

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

解凍した.dmgファイルのファイルが必要なだけで、マウントしたくありません。

気になる方のために、事前に準備できないコンピューターのワークショップで使用するポータブル開発環境を作成するためにこれが必要です。

20
qubodup

7z x

たとえば崇高なテキストの場合、7z x "Sublime Text 2.0.2.dmg"は、すべてのファイルを抽出するのに十分です。

他の場合、例えばJDKのように、ある種のマトリョーシカを扱わなければなりません。

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

しかし、最終的には、探しているファイルを含むフォルダーが作成されます。

32
qubodup

7zが正しく機能しない場合があります。

その場合は https://sourceforge.net/projects/catacombae/files/HFSExplorer/0.23.1/ を使用します

1
albfan

Macでは、dmgがすべてのファイルを含むディレクトリのイメージである場合、dmgではなくディレクトリのtgzを作成し、それを移行します。

#!/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