Як витягнути .dmg файл в Linux?


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.

У випадку, наприклад, піднесеного тексту, 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~

Але в підсумку ви отримаєте папку з файлами, які шукаєте.


Витяг dmg-файлів із 7z, здається, не вистачає виконуваних бітів, що робить витягнуті програми з DMG нефункціональними. Можуть бути пов’язані: sourceforge.net/p/p7zip/bugs/113
Motin


1

На комп'ютері Mac, якщо dmg - це зображення каталогу, що містить усі файли, тоді зробіть tgz каталогу замість dmg та перемістіть його.

#!/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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.