มีคำสั่งให้ติดตั้ง dmg หรือไม่


51

ฉันต้องการติดตั้งไฟล์ dmg บนเซิร์ฟเวอร์ระยะไกล ทั้งหมดที่ฉันมีคือการเข้าถึง ssh เนื่องจาก DMG เป็นดิสก์อิมเมจฉันจึงพยายามเมานต์ แต่เมาต์ไม่รู้จักรูปแบบของมัน

fileกล่าวว่าไฟล์ dmg VAX COFF executableของฉันคือ

คำตอบ:


71

ก่อนอื่นให้เมานต์ภาพ dmg: sudo hdiutil attach <image>.dmg

/Volumes/<image>ภาพจะถูกติดตั้งไป Mine มีแพ็คเกจที่ฉันติดตั้งด้วย:sudo installer -package /Volumes/<image>/<image>.pkg -target /

sudo hdiutil detach /Volumes/<image>ในที่สุดก็เลิกเมานท์ภาพ:


ฉันทำอย่างนั้นกับDocker.dmgและฉันก็ไม่ได้<image>.pkgดังนั้นที่ไม่ทำงาน
Dimitri Kopriwa

19

คุณควรจะเมานท์.dmgโดยใช้:

hdiutil attach /path/to/file.dmg

แล้วคัดลอกเนื้อหา (ซึ่งปรากฏใน/Volumes) ที่คุณเคยชอบ


5

ฉันต้องเมานต์และคัดลอก.appไปยัง/Applicationsโฟลเดอร์ สำหรับ Etcher.app:

ครั้งแรกในฐานะ @trojanfoe กล่าวว่า:

sudo hdiutil attach /Users/janatac/Etcher-1.2.1.dmg

แล้วก็

sudo cp -R /Volumes/Etcher\ 1.2.1/Etcher.app /Applications

คุณมีแอปพลิเคชันของคุณใน/Applicationsโฟลเดอร์

อย่าลืมยกเลิกการต่อเชื่อมระดับเสียง:

sudo hdiutil unmount /Volumes/Etcher\ 1.2.1/

Got มันทำงานหลังจากที่ได้อ่านคำแนะนำจากบล็อกโพสต์


5

หากคุณต้องการติดตั้งสคริปต์ต้องใช้ขั้นตอนเพิ่มเติมไม่กี่ขั้นตอนตั้งแต่ชื่อของ.dmgไฟล์ชื่อของโวลุ่มที่สร้างขึ้นชื่อของแอปพลิเคชันและชื่อของอุปกรณ์ที่ต้องถอดออกอาจแตกต่างกันทั้งหมด รวมทั้งพวกเขาสามารถมีช่องว่างในพวกเขา

นอกจากนี้ยัง.dmgสามารถมี.appไฟล์หรือ.pkgไฟล์ในนั้นและสิ่งเหล่านี้ต้องการพฤติกรรมที่แตกต่างกัน

นี่คือฟังก์ชั่นทุบตีเพื่อติดตั้ง dmg จาก URL ระยะไกล:

# usage: installdmg https://example.com/path/to/pkg.dmg
function installdmg {
    set -x
    tempd=$(mktemp -d)
    curl $1 > $tempd/pkg.dmg
    listing=$(sudo hdiutil attach $tempd/pkg.dmg | grep Volumes)
    volume=$(echo "$listing" | cut -f 3)
    if [ -e "$volume"/*.app ]; then
      sudo cp -rf "$volume"/*.app /Applications
    elif [ -e "$volume"/*.pkg ]; then
      package=$(ls -1 "$volume" | grep .pkg | head -1)
      sudo installer -pkg "$volume"/"$package" -target /
    fi
    sudo hdiutil detach "$(echo "$listing" | cut -f 1)"
    rm -rf $tempd
    set +x
}

หมายเหตุหากคุณ.dmgมี.appไฟล์ที่รันเพื่อติดตั้งโปรแกรมคุณจะต้องทำสิ่งที่แตกต่างอีกครั้ง


สิ่งนี้จะใช้ได้กับแอปที่พร้อมใช้งานของ dmg เท่านั้นไม่ใช่สำหรับแพ็คเกจหรือแอพตัวติดตั้ง
nohillside

@patrix คุณสามารถให้ตัวอย่างของแพคเกจและแอพติดตั้งที่ฉันสามารถทดสอบเพื่อปรับแต่งคำตอบได้ไหม?
voutasaurus

แพคเกจนั้นง่าย (สิ้นสุดใน. pkg) แต่แอพตัวติดตั้งดูเหมือนกับของจริง
nohillside

สิ่งนี้ไม่แยกไฟล์ hdiutil: detach failed - No such file or directory
Nicholas DiP Piazza

1
@NicholasDiP Piazza ฉันหวังว่า Apple จะทำให้สิ่งนี้ง่ายขึ้นโดยการจัดหาและบังคับใช้มาตรฐานเดียวที่ใช้งานง่ายและมอบเครื่องมือสำหรับนักพัฒนาในการแปลงโปรแกรมติดตั้งที่มีอยู่ให้ใช้มาตรฐานใหม่โดยอัตโนมัติ
voutasaurus

1

open disk://host.tld/image.dmgคุณอาจจะลองคำสั่ง


openไม่ได้ทำอะไรเลยเพียงออกโดยไม่มีข้อผิดพลาด
philant

2
ใช่แล้ว. ฉันเพิ่งทดสอบมัน มันจะไม่แสดงผลใด ๆ จนกว่าดิสก์อิมเมจจะถูกเมาท์อย่างสมบูรณ์ดังนั้นคุณจะต้องรอหนึ่งนาทีก่อนที่จะปรากฏใน / Volumes (มันทำงานได้ถ้าคุณ ssh ในและประเภทopen path/to/file.dmgฉันไม่คิดว่า. disk://host.tld/งานแม้ว่า.)
daviewales

มีประโยชน์แม้ว่าอาจจะไม่ใช่สิ่งที่ OP ต้องการ ขอบคุณ
Danny Whitt
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.