Linux'ta bir .dmg dosyası nasıl ayıklanır?


19

Linux kullanıcısı olarak, bir uygulama yükleyici içeren bir .dmg (Mac OSX disk görüntüsü) dosyasının içeriğini almam gerekiyor.

Ben denedim dmg2dir(gerektirir dmg2img) hangi bir .img dosyası ancak başka bir şey yarattı.

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

Sadece .dmg dosyasındaki dosyaları açmaya ihtiyacım var, onu bağlamak istemiyorum.

Merak ediyorsanız, önceden hazırlanamayan bilgisayarlardaki atölyelerde kullanılmak üzere taşınabilir bir geliştirme ortamı oluşturmak için buna ihtiyacım var.


1
Bir disk görüntüsüdür. Birisi programlarına dosya sistemi okuyucuları yazmak için (7z sanırım) tüm işlere gitmedikçe, en kolay yol, verileri okumak için Linux çekirdek dosya sistemi modüllerini kullanmaktır. Yani montaj.
Zan Lynx

Yanıtlar:


31

Sadece kullan 7z x.

Örneğin, Yüce metin durumunda, 7z x "Sublime Text 2.0.2.dmg"tüm dosyaları çıkarmak için yeterli olacaktır.

Diğer durumlarda, örneğin JDK gibi, bir çeşit matryoshka ile uğraşmak zorundasınız.

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

Ama sonunda aradığınız dosyaları içeren bir klasör alacaksınız.


7z ile dmg dosyalarını ayıklamak yürütülebilir bitleri gözden kaçırır ve DMG'lerden ayıklanan uygulamaları işlevsiz yapar. İlgili olabilir: sourceforge.net/p/p7zip/bugs/113
Motin


1

Mac'te, dmg tüm dosyaları içeren bir dizinin görüntüsü ise, dmg yerine dizinin tgz'ini oluşturun ve taşıyın.

#!/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
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.