102 votos

¿Existe un comando para instalar un archivo dmg?

Quiero instalar un archivo dmg en un servidor remoto. Todo lo que tengo es acceso ssh. Como un archivo DMG es una imagen de disco, intenté montarlo, pero mount no parece reconocer su formato.

file dice que mi archivo dmg es un ejecutable VAX COFF.

119voto

JBentley Puntos 215

Primero, monta la imagen dmg: hdiutil attach .dmg

La imagen se montará en /Volumes/. El mío contenía un paquete que instalé con: sudo installer -package /Volumes//.pkg -target /

Por último, desmonta la imagen: hdiutil detach /Volumes/.

1 votos

Hice eso con Docker.dmg y no tenía .pkg así que eso no funcionó

0 votos

La mía es .app en lugar de .pkg después de hacer sudo hdiutil attach .dmg, ¿cómo puedo hacer entonces?

3 votos

@jack Si hay una aplicación dentro de un archivo DMG generalmente puedes simplemente arrastrar/copiarla a /Applications.

23voto

Donniel Thomas Puntos 1048

Debería poder montar el .dmg usando:

hdiutil attach /ruta/al/archivo.dmg

Y luego copiar su contenido (que aparece en /Volumes) donde desee.

18voto

Michael Yasumoto Puntos 513

Tuve que montar y copiar la .app en la carpeta /Applications. Para Etcher.app:

Primero como dijo @trojanfoe :

sudo hdiutil attach /Users/janatac/Etcher-1.2.1.dmg

Luego

sudo cp -R /Volumes/Etcher\ 1.2.1/Etcher.app /Applications

Luego tendrás tu aplicación en la carpeta /Applications

No olvides desmontar el volumen :

sudo hdiutil unmount /Volumes/Etcher\ 1.2.1/

Conseguí que funcionara después de leer las instrucciones de una publicación en un blog.

14voto

Andres Salas Puntos 155

Si desea automatizar la instalación, requiere algunos pasos más, ya que el nombre del archivo .dmg, el nombre del Volumen creado, el nombre de la aplicación y el nombre del dispositivo que necesita ser desconectado pueden ser diferentes. Además, pueden contener espacios.

Además, un archivo .dmg puede contener un archivo .app o un archivo .pkg y estos requieren un comportamiento diferente.

Aquí tienes una función bash para instalar un archivo dmg desde una URL remota:

# uso: installdmg https://ejemplo.com/ruta/a/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
}

Ten en cuenta que si tu archivo .dmg tiene un archivo .app que se ejecuta para instalar el programa, entonces necesitarás hacer algo diferente nuevamente.

0 votos

Esto solo funcionará para los dmg que contienen aplicaciones listas para ejecutarse, no para paquetes o aplicaciones de instalación.

0 votos

@patrix ¿puedes darme algunos ejemplos de paquetes y aplicaciones de instalación que pueda probar para perfeccionar la respuesta?

0 votos

Los paquetes son fáciles (terminan en .pkg), pero una aplicación de instalación se ve igual que una real

1voto

Ben Throop Puntos 1099

Puedes intentar el comando open disk://host.tld/image.dmg.

0 votos

open no hizo nada, simplemente salió, sin mensaje de error.

2 votos

Sí lo hace. Acabo de probarlo. No mostrará nada hasta que la imagen del disco se haya montado completamente, así que tendrás que esperar un minuto o algo así antes de que aparezca en /Volumes. (Funciona si te conectas por ssh y escribes open path/to/file.dmg. No creo que funcione disk://host.tld/ sin embargo.)

0 votos

Útil, aunque tal vez no exactamente lo que el OP necesitaba. Gracias.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X