Я хочу встановити dmg-файл на віддалений сервер. Все, що у мене є, це ssh-доступ. Оскільки DMG - це образ диска, я спробував його встановити, але він, схоже, не розпізнає його формат.
file
каже, що мій файл dmg - це VAX COFF executable
.
Я хочу встановити dmg-файл на віддалений сервер. Все, що у мене є, це ssh-доступ. Оскільки DMG - це образ диска, я спробував його встановити, але він, схоже, не розпізнає його формат.
file
каже, що мій файл dmg - це VAX COFF executable
.
Відповіді:
Спочатку змонтуйте зображення dmg: sudo hdiutil attach <image>.dmg
Зображення буде встановлено на /Volumes/<image>
. Моя містила пакет, який я встановив за допомогою:sudo installer -package /Volumes/<image>/<image>.pkg -target /
Нарешті демонтувати образ: sudo hdiutil detach /Volumes/<image>
.
Я повинен був встановити і скопіювати .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/
Дійшов до роботи, прочитавши інструкції з публікації в блозі .
Якщо ви хочете встановити сценарій для встановлення, потрібні ще кілька кроків, оскільки ім'я .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
файл, який працює для встановлення програми, вам потрібно буде зробити щось інше заново.
hdiutil: detach failed - No such file or directory
Ви можете спробувати команду open disk://host.tld/image.dmg
.
open
нічого не зробив, просто вийшов, без повідомлення про помилку.
open path/to/file.dmg
. Я не думаю, що disk://host.tld/
працює.)
Docker.dmg
і не мав,<image>.pkg
щоб діт не працював