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 커널 파일 시스템 모듈을 사용하여 데이터를 읽는 것입니다. 그것은 그것을 장착하는 것을 의미합니다.
Zan Lynx 4

답변:


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.