Quiero instalar un archivo dmg en un servidor remoto. Todo lo que tengo es un acceso ssh. Dado que un DMG es una imagen de disco, intenté montarlo, pero parece que el montaje no reconoce su formato.
file
dice que mi archivo dmg es un VAX COFF executable
.
Primero, monte la imagen dmg:sudo hdiutil attach <image>.dmg
La imagen se montará en /Volumes/<image>
. El mío contenía un paquete que instalé con:sudo installer -package /Volumes/<image>/<image>.pkg -target /
Finalmente desmontar la imagen: sudo hdiutil detach /Volumes/<image>
.
Debería poder montar el .dmg
uso de:
hdiutil attach /path/to/file.dmg
Y luego copia su contenido (que aparece en /Volumes
) donde quieras.
Tuve que montar y copiar la carpeta .app
a . /Applications
Para Etcher.app:
Primero como @trojanfoe dijo:
sudo hdiutil attach /Users/janatac/Etcher-1.2.1.dmg
Después
sudo cp -R /Volumes/Etcher\ 1.2.1/Etcher.app /Applications
A continuación, tiene su aplicación en la /Applications
carpeta
No olvides desmontar el volumen:
sudo hdiutil unmount /Volumes/Etcher\ 1.2.1/
Lo hice funcionar después de leer las instrucciones de una publicación de blog .
Si desea programar la instalación, se requieren algunos pasos más, ya que el nombre del .dmg
archivo, el nombre del Volumen creado, el nombre de la aplicación y el nombre del dispositivo que debe desconectarse pueden ser diferentes. Además pueden tener espacios en ellos.
También .dmg
puede tener un .app
archivo o un .pkg
archivo y estos requieren un comportamiento diferente.
Aquí hay una función bash para instalar un dmg desde una URL remota:
# 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
}
Tenga en cuenta que si .dmg
tiene un .app
archivo que se ejecuta para instalar el programa, entonces deberá hacer algo diferente nuevamente.
hdiutil: detach failed - No such file or directory
sudo hdiutil unmount "$volume"/*.app
sudo
Podrías probar con el comando open disk://host.tld/image.dmg
.
open
no hizo nada, solo salió, sin mensaje de error.open path/to/file.dmg
. Aunque no creo que disk://host.tld/
funcione).open -W </path/todmg>
funcionó (espera hasta que el volumen realmente apareció).Después de haber descargado el archivo .dmg. Al presionar el botón derecho, el archivo debe montarse y abrirse con la misma imagen.DiskImageMounter (Predeterminado).
Él. Luego se mostrará el archivo de la aplicación. Cuando el. aparece el archivo de la aplicación, abra el terminal y navegue hasta el directorio de escritura donde se encuentra el archivo. y escriba open -a/ExistingFileName.app en el símbolo del sistema, luego presione enter. Así es como uso el terminal macOS para iniciar el archivo.dmg.
Dimitri Kopriwa
Docker.dmg
y no tenía<image>.pkg
para que no funcionaraJack
<image>.app
en lugar de<image>.pkg
después de hacersudo hdiutil attach <image>.dmg
, ¿cómo puedo hacer entonces?sin ladera