Ответы:
Сначала смонтируйте образ 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
так, чтобы dit не работал