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


19

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

私が試したdmg2dir(必要とするdmg2img).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ファイルのファイルが必要なだけで、マウントしたくありません。

好奇心が強い場合は、事前に準備できないコンピューターのワークショップで使用するポータブル開発環境を作成する必要があります。


1
これはディスクイメージです。誰かがファイルシステムリーダーをプログラムに書き込むために(7zが行ったと思われる)すべての作業に行っていない限り、最も簡単な方法は、Linuxカーネルファイルシステムモジュールを使用してデータを読み取ることです。それはそれをマウントすることを意味します。
ザンリンクス

回答:


31

使用するだけ7z xです。

たとえば、Sublimeテキストの場合、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~

しかし、最終的には、探しているファイルを含むフォルダーを取得します。


7zを使用してdmgファイルを抽出すると、実行可能ファイルが失われるため、DMGから抽出されたアプリケーションが機能しなくなります。関連する可能性があります:sourceforge.net/p/p7zip/bugs/113
Motin


1

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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.