क्या डीएमजी स्थापित करने के लिए कोई कमांड है


51

मैं एक दूरस्थ सर्वर पर एक dmg फ़ाइल स्थापित करना चाहता हूँ। मेरे पास सभी एक ssh एक्सेस है। चूंकि एक डीएमजी एक डिस्क छवि है, मैंने इसे माउंट करने की कोशिश की, लेकिन माउंट इसके प्रारूप को पहचानता नहीं दिख रहा है।

fileमेरा dmg फ़ाइल एक है VAX COFF executable

जवाबों:


71

सबसे पहले, dmg छवि माउंट करें: sudo hdiutil attach <image>.dmg

छवि को माउंट किया जाएगा /Volumes/<image>। मेरा एक पैकेज है जो मैंने स्थापित किया है:sudo installer -package /Volumes/<image>/<image>.pkg -target /

अंत में छवि को अनमाउंट करें sudo hdiutil detach /Volumes/<image>:।


मैंने ऐसा किया था Docker.dmgऔर मेरे पास <image>.pkgऐसा नहीं था, जो काम नहीं करता था
दिमित्री कोपरिवा

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/

यह एक ब्लॉग पोस्ट से निर्देश पढ़ने के बाद काम मिल गया ।


5

यदि आप इंस्टॉल को स्क्रिप्ट करना चाहते हैं .dmg, तो फ़ाइल के नाम, बनाए गए वॉल्यूम का नाम, एप्लिकेशन का नाम और जिस डिवाइस को अलग करने की आवश्यकता है उसके नाम के लिए कुछ और चरणों की आवश्यकता होती है , सभी अलग-अलग हो सकते हैं। साथ ही उनमें स्पेस हो सकता है।

इसके अलावा .dmgइसमें एक .appफ़ाइल या एक .pkgफ़ाइल हो सकती है और इसके लिए अलग-अलग व्यवहार की आवश्यकता होती है।

यहाँ एक दूरस्थ URL से एक dmg स्थापित करने के लिए एक बश फ़ंक्शन है:

# 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फ़ाइल है जो प्रोग्राम को स्थापित करने के लिए चलती है, तो आपको फिर से कुछ अलग करने की आवश्यकता होगी।


यह केवल डीजीएम युक्त रेडी-टू-रन ऐप के लिए काम करेगा, न कि पैकेज या इंस्टॉलर ऐप के लिए।
nohillside

@patrix क्या आप मुझे पैकेज और इंस्टॉलर ऐप्स के कुछ उदाहरण दे सकते हैं जिन्हें मैं उत्तर को परिष्कृत करने के लिए परीक्षण कर सकता हूं?
वौतासौरस

संकुल आसान (.pkg में अंत) हैं, लेकिन एक इंस्टॉलर एप्लिकेशन एक असली एक के रूप में एक ही लग रहा है
nohillside

यह फ़ाइल को अलग नहीं करता है। hdiutil: detach failed - No such file or directory
निकोलस डिपियाज़ा

1
@ नाइकोलाडिसपियाज़ा काश, Apple मानक का उपयोग करने के लिए एक आसान प्रदान करने और लागू करने से डेवलपर्स को आसान बना देता और डेवलपर्स टूल को नए मानक का उपयोग करने के लिए अपने मौजूदा इंस्टॉलर को स्वचालित रूप से परिवर्तित करने के लिए देता।
वौतासोरस

1

आप कमांड को आजमा सकते हैं open disk://host.tld/image.dmg


openत्रुटि संदेश के बिना, बस बाहर निकलें, कुछ भी नहीं किया।
दीक्षा

2
हाँ यह करता है। मैंने अभी इसका परीक्षण किया। यह तब तक कुछ भी प्रदर्शित नहीं करेगा जब तक कि डिस्क छवि पूरी तरह से माउंट नहीं हो जाती है, इसलिए आपको / वॉल्यूम में प्रकट होने से पहले एक मिनट इंतजार करना होगा। (यह काम करता है यदि आप ssh और टाइप करते हैं open path/to/file.dmg। मुझे नहीं लगता कि disk://host.tld/हालांकि काम करता है।)
Daviewales

मददगार, हालांकि ओपी की जरूरत शायद बिल्कुल नहीं। धन्यवाद।
डैनी Whitt
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.