วิธีการแตกไฟล์. 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 เพื่ออ่านข้อมูล ซึ่งหมายถึงการติดตั้ง
Zan Lynx

คำตอบ:


31

7z xเพียงแค่ใช้

ในกรณีเช่นข้อความ Sublime 7z x "Sublime Text 2.0.2.dmg"จะเพียงพอที่จะแยกไฟล์ทั้งหมด

ในกรณีอื่น ๆ เช่น JDK คุณต้องจัดการกับ matryoshka บางประเภท

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

แต่ในที่สุดคุณจะได้รับโฟลเดอร์ที่มีไฟล์ที่คุณต้องการ


การแตกไฟล์ dmg ด้วย 7z ดูเหมือนจะพลาดบิตที่เรียกใช้งานได้ทำให้แอปพลิเคชันที่แยกออกมาจาก DMGs ผิดปกติ อาจจะเกี่ยวข้อง: 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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.