¿Hay un comando para instalar un dmg?

41

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 .

    
pregunta philant 05.12.2012 - 10:16

5 respuestas

58

Primero, monta 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 desmonta la imagen: sudo hdiutil detach /Volumes/<image> .

    
respondido por el philant 05.12.2012 - 10:34
17

Deberías poder montar el .dmg usando:

hdiutil attach /path/to/file.dmg

Y luego copia su contenido (que aparece en /Volumes ) donde quieras.

    
respondido por el trojanfoe 05.12.2012 - 10:26
4

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

Primero como dijo @trojanfoe:

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

entonces

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

Luego tienes tu aplicación en la carpeta /Applications

No olvides desmontar el volumen:

sudo hdiutil unmount /Volumes/Etcher\ 1.2.1/

Lo tengo funcionando después de leer instrucciones de una publicación de blog .

    
respondido por el Jan ATAC 09.12.2017 - 18:28
2

Si desea realizar un script de la instalación, se requieren 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 se debe separar todos pueden ser diferentes Además, pueden tener espacios en ellos.

También un .dmg puede tener un archivo .app o un archivo .pkg y requieren un comportamiento diferente.

Aquí hay una función de 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 | grep *.pkg | head -1)
      sudo installer -pkg "$volume"/"$package".pkg -target /
    fi
    sudo hdiutil detach "$(echo "$listing" | cut -f 1)"
    rm -rf $tempd
    set +x
}

Tenga en cuenta que si .dmg tiene un archivo .app que se ejecuta para instalar el programa, entonces tendrá que hacer algo diferente nuevamente.

    
respondido por el voutasaurus 07.01.2018 - 20:54
1

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

    
respondido por el Sanjuro 05.12.2012 - 10:26

Lea otras preguntas en las etiquetas