Làm cách nào để giải nén tập tin .dmg trong Linux?


19

Là người dùng Linux, tôi cần lấy nội dung của tệp .dmg (ảnh đĩa Mac OSX) có chứa trình cài đặt ứng dụng.

Tôi đã thử dmg2dir(yêu cầu dmg2img) tạo ra một tệp .img nhưng không có gì khác.

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

Tôi chỉ cần các tệp từ tệp .dmg được giải nén, tôi không muốn gắn kết nó.

Trong trường hợp bạn tò mò, tôi cần điều này để tạo ra một môi trường phát triển di động được sử dụng tại các hội thảo trên các máy tính không thể chuẩn bị trước.


1
Nó là một hình ảnh đĩa. Trừ khi ai đó đã đi đến tất cả các công việc (mà tôi đoán là 7z đã làm) để ghi các trình đọc hệ thống tệp vào chương trình của họ, cách dễ nhất là sử dụng các mô-đun hệ thống tập tin nhân Linux để đọc dữ liệu. Có nghĩa là gắn nó.
Zan Lynx

Câu trả lời:


31

Chỉ cần sử dụng 7z x.

Trong trường hợp ví dụ văn bản Sublime, 7z x "Sublime Text 2.0.2.dmg"sẽ đủ để trích xuất tất cả các tệp.

Trong các trường hợp khác, ví dụ như JDK, bạn phải đối phó với một số loại matryoshka.

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

Nhưng cuối cùng bạn sẽ nhận được một thư mục chứa các tệp bạn đang tìm kiếm.


Trích xuất các tệp dmg với 7z dường như bỏ lỡ các bit thực thi, làm cho các ứng dụng được trích xuất từ ​​DMG bị rối loạn. Có thể liên quan: sourceforge.net/p/p7zip/bugs/113
Motin


1

Trên máy Mac, nếu dmg là hình ảnh của một thư mục chứa tất cả các tệp, thì hãy tạo một tgz của thư mục thay vì dmg và di chuyển 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
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.