¿Hay un comando para instalar un dmg?

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.

filedice que mi archivo dmg es un VAX COFF executable.

Respuestas (6)

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>.

Hice eso con Docker.dmgy no tenía <image>.pkgpara que no funcionara
el mío es <image>.appen lugar de <image>.pkgdespués de hacer sudo hdiutil attach <image>.dmg, ¿cómo puedo hacer entonces?
@jack Si hay un .app dentro de un DMG, normalmente puede simplemente arrastrarlo/copiarlo a /Aplicaciones.

Debería poder montar el .dmguso 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 .appa . /ApplicationsPara 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 /Applicationscarpeta

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 .dmgarchivo, 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 .dmgpuede tener un .apparchivo o un .pkgarchivo 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 .dmgtiene un .apparchivo que se ejecuta para instalar el programa, entonces deberá hacer algo diferente nuevamente.

Esto solo funcionará para dmg que contengan aplicaciones listas para ejecutarse, no para paquetes o aplicaciones de instalación.
@patrix, ¿puede darme algunos ejemplos de paquetes y aplicaciones de instalación con los que puedo probar para refinar la respuesta?
Los paquetes son sencillos (terminan en .pkg), pero una aplicación de instalación tiene el mismo aspecto que una real
esto no separa el archivo.hdiutil: detach failed - No such file or directory
lo arregla:sudo hdiutil unmount "$volume"/*.app
Desearía que hubiera una manera de hacer esto sinsudo
@NicholasDiPiazza Me gustaría que Apple hiciera esto más fácil proporcionando y haciendo cumplir un único estándar fácil de usar y brindando a los desarrolladores herramientas para convertir automáticamente sus instaladores existentes para usar el nuevo estándar.

Podrías probar con el comando open disk://host.tld/image.dmg.

openno hizo nada, solo salió, sin mensaje de error.
Sí lo hace. Acabo de probarlo. No mostrará nada hasta que la imagen del disco se haya montado por completo, por lo que tendrá que esperar aproximadamente un minuto antes de que aparezca en /Volumes. (Funciona si ingresa y escribe open path/to/file.dmg. Aunque no creo que disk://host.tld/funcione).
Útil, aunque tal vez no sea exactamente lo que necesitaba el OP. Gracias.
Descubrí que 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).

ingrese la descripción de la imagen aquí.

É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.

También puede simplemente hacer doble clic en el archivo DMG para abrirlo. Además, sea más específico sobre lo que quiere decir con "abrir la terminal, ir al directorio, escribir abrir -a/NombreDeArchivo.app y presionar enter", esto parece carecer de algunos detalles.