Чи є команда встановити dmg


51

Я хочу встановити dmg-файл на віддалений сервер. Все, що у мене є, це ssh-доступ. Оскільки DMG - це образ диска, я спробував його встановити, але він, схоже, не розпізнає його формат.

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файл, і вони вимагають різної поведінки.

Ось функція bash для встановлення 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
Ніколас ДіПіаца

1
@NicholasDiPiazza Я б хотів, щоб Apple полегшила це, надавши та застосувавши єдиний простий у використанні стандарт та надавши розробникам інструменти для автоматичного перетворення своїх існуючих інсталяторів для використання нового стандарту.
voutasaurus

1

Ви можете спробувати команду open disk://host.tld/image.dmg.


openнічого не зробив, просто вийшов, без повідомлення про помилку.
благодійник

2
Так. Я просто тестував це. Він не відображатиме нічого, доки зображення диска не буде повністю змонтоване, тому доведеться почекати хвилину або близько того, перш ніж воно з’явиться в / том. (Це спрацьовує, якщо ви вставте і введіть open path/to/file.dmg. Я не думаю, що disk://host.tld/працює.)
daviewales

Корисно, хоча, можливо, не зовсім те, що потрібно було ОП. Дякую.
Danny Whitt
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.