Ich automatisiere meine Mac-Installation mit Puppet. Als Teil davon muss ich mehrere Programme installieren, die im .dmg-Format vorliegen.
Ich benutze die folgenden, um sie zu montieren:
sudo /usr/bin/hdiutil mount -plist -nobrowse -readonly -quiet -mountrandom /tmp Program.dmg
Das Problem ist, dass einige .dmg-Dateien mit einer Lizenz versehen sind und das Skript die Lizenz nicht mehr akzeptiert. (Es gibt kein stdin / out beim Laufen mit Puppe, daher kann ich es nicht manuell genehmigen, um fortzufahren.)
Gibt es eine Möglichkeit, die Lizenz vorab zu genehmigen oder zu erzwingen?
Antworten:
Wenn Sie eine GUI haben und zwei Befehlszeilenaufrufe gleichzeitig ausführen können, können Sie verwenden
und
Letzteres führt das folgende AppleScript aus:
In
bash
, ich bin in der Lage zu schreibenquelle
Dies funktionierte für mich, als ich auf eine .dmg stieß, die eine EULA enthielt, die ich ohne Benutzerinteraktion über die Befehlszeile installieren wollte ...
(Anmerkung: Ich bin ziemlich sicher , nicht alle oben genannten Optionen benötigt werden Bypass des EULA, wie
-nobrowse
,-noverify
,-noautoopen
,-mountpoint
jedoch habe ich sie und ich nicht Test ohne sie so dass ich nicht Anspruch etwas wollte , dass ich. hatte nicht getestet.)Am Ende hatte ich ein Verzeichnis mit
wo
right_here/
die Inhalte der enthaltenenfoo.dmg
ohne für die EULA aufgefordert zu werden.Achten Sie darauf, sich zu lösen, wenn Sie fertig sind!
Weitere Informationen: hdiutil (1) Mac OS X Manual Page .
YMMV
quelle
Wenn nur "Y" eingegeben werden muss, leiten Sie den Befehl yes in den Befehl hdiutil:
Das emuliert das Drücken von 'y' und kehrt in die Befehlszeile zurück.
Um etwas anderes einzugeben, geben Sie es einfach als Parameter in die Befehlszeile ein:
Dann wird "accept" in das Skript eingegeben.
Beachten Sie, dass, wenn das Skript mehrmals nach Eingaben fragt, der Befehl yes mehrere Einträge eingibt. Möglicherweise wird die Ausgabe als 'broken pipe' angezeigt. Dies bedeutet lediglich, dass der Befehl, den Sie beim Beenden von 'yes' eingegeben haben, noch Eingaben gesendet hat.
quelle
Ich bin kürzlich auf eine DMG gestoßen, die einen EULA hatte, und es hat mich wirklich irritiert, da ich nicht daran herum schreiben konnte. Ich habe herausgefunden, dass die DMG, wenn sie in eine CDR konvertiert wurde, die EULA beim Mounten der CDR umging.
Folgendes habe ich getan:
Hoffe das hilft.
quelle
yes | hdiutil...
Lösungen würden für mich hängen, wenn sie aus irgendeinem verrückten Grund von einem Python-Skript aufgerufen werden.Wenn Sie eine mehrseitige EULA haben, die Sie akzeptieren müssen, können Sie zum Accept-Teil gelangen, indem Sie
q
vor den Rest Ihres Accept-Befehls ein setzen (da Sie nur einen akzeptierten Quit-Befehl benötigenless
, können Sie auchZZ
oder verwendenQ
).Wenn Sie beispielsweise in der EULA aufgefordert werden, ein einzugeben, um
y
zu akzeptieren, dass Sie ausgeführt werden:quelle
Sollten Sie nicht Puppet-eigene Tools verwenden, um Pakete zu installieren? Ich bin selbst ein Radmind-Administrator und ich kenne mich mit Puppet nicht aus, aber eine Überprüfung des Wikis zeigt, dass es ein Tool namens pkgdmg gibt, das möglicherweise das Äquivalent zu dem leistet, was Sie erreichen möchten.
http://projects.puppetlabs.com/projects/puppet/wiki/Puppet_Mac_Osx#packagepkgdmg
quelle