Esiste un comando per installare un dmg

41

Voglio installare un file dmg su un server remoto. Tutto quello che ho è un accesso ssh. Dal momento che un DMG è un'immagine disco, ho provato a montarlo, ma mount non sembra riconoscere il suo formato.

file dice che il mio file dmg è un VAX COFF executable .

    
posta philant 05.12.2012 - 10:16
fonte

5 risposte

58

Innanzitutto, monta l'immagine dmg: sudo hdiutil attach <image>.dmg

L'immagine verrà montata su /Volumes/<image> . Il mio conteneva un pacchetto che ho installato con: sudo installer -package /Volumes/<image>/<image>.pkg -target /

Infine smonta l'immagine: sudo hdiutil detach /Volumes/<image> .

    
risposta data 05.12.2012 - 10:34
fonte
17

Dovresti essere in grado di montare .dmg usando:

hdiutil attach /path/to/file.dmg

E poi copia il suo contenuto (che appare in /Volumes ) dove preferisci.

    
risposta data 05.12.2012 - 10:26
fonte
4

Ho dovuto montare e copiare la cartella .app in /Applications . Per Etcher.app:

Prima come @trojanfoe ha detto:

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

Poi

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

Hai quindi la tua applicazione nella cartella /Applications

Non dimenticare di smontare il volume:

sudo hdiutil unmount /Volumes/Etcher\ 1.2.1/

Funziona dopo aver letto istruzioni da un post sul blog .

    
risposta data 09.12.2017 - 18:28
fonte
3

Se vuoi eseguire lo script dell'installazione richiede un paio di passaggi dal nome del file .dmg , il nome del volume creato, il nome dell'applicazione e il nome del dispositivo che deve essere rimosso possono essere tutti diversi Inoltre possono avere spazi in loro.

Anche un .dmg può avere un file .app o un file .pkg al suo interno e questi richiedono un comportamento diverso.

Ecco una funzione di bash per installare un dmg da un URL remoto:

# 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
}

Nota se il tuo .dmg ha un file .app che viene eseguito per installare il programma, allora dovrai fare di nuovo qualcosa di diverso.

    
risposta data 07.01.2018 - 20:54
fonte
1

Potresti provare il comando open disk://host.tld/image.dmg .

    
risposta data 05.12.2012 - 10:26
fonte

Leggi altre domande sui tag