J'automatise mon installation Mac à l'aide de marionnettes. Dans le cadre de celui-ci, j'ai besoin d'installer plusieurs programmes qui viennent dans un format .dmg.
J'utilise ce qui suit pour les monter:
sudo /usr/bin/hdiutil mount -plist -nobrowse -readonly -quiet -mountrandom /tmp Program.dmg
Le problème est que certains fichiers .dmg sont livrés avec une licence jointe, et donc le script est bloqué en acceptant la licence. (Il n'y a pas de stdin / out lors de l'exécution avec une marionnette, donc je ne peux pas l'approuver manuellement pour continuer.)
Existe-t-il un moyen d'approuver au préalable ou de forcer l'approbation de la licence?
Réponses:
Si vous disposez d'une interface graphique et que vous pouvez effectuer deux appels de ligne de commande en parallèle, vous pouvez utiliser
et
ce dernier exécute le AppleScript suivant:
En
bash
, je peux écrirela source
Cela a fonctionné pour moi lorsque j'ai rencontré un .dmg contenant un CLUF que je voulais installer via la ligne de commande sans interaction avec l'utilisateur ...
(note: Je suis raisonnablement sûr de ne pas toutes les options ci - dessus sont nécessaires pour contourner le CLUF, par exemple
-nobrowse
,-noverify
,-noautoopen
,-mountpoint
cependant, je les utilise et je n'ai pas testé sans eux donc je ne voulais pas réclamer quelque chose que je. n'avait pas testé.)Je me suis retrouvé avec un répertoire avec
où
right_here/
contenait le contenu dufoo.dmg
sans être invité pour le CLUF.Assurez-vous de vous détacher lorsque vous avez terminé!
Pour plus d' informations: hdiutil (1) Manuel Mac OS X page .
YMMV
la source
S'il suffit de taper "Y", canalisez la commande yes dans la commande hdiutil:
Cela émulera en appuyant sur 'y' et reviendra sur la ligne de commande.
Pour taper autre chose, il suffit de le mettre sur la ligne de commande comme paramètre:
Cela entrera «accepter» dans le script.
Notez que si le script demande des entrées plusieurs fois, la commande yes mettra plusieurs entrées dedans. Vous pouvez voir des sorties comme 'pipe cassée' - cela signifie simplement que la commande que vous avez envoyée pendant la sortie alors que 'yes' envoyait toujours des entrées.
la source
J'ai récemment rencontré un DMG qui avait un CLUF et cela m'a vraiment énervé car je ne pouvais pas écrire autour de lui. J'ai compris que si je convertissais le DMG en CDR, il contournait le CLUF lors du montage du CDR.
Voici ce que j'ai fait:
J'espère que cela t'aides.
la source
yes | hdiutil...
solutions se bloquaient pour moi lorsqu'elles étaient appelées à partir d'un script python pour une raison folle.Si vous avez un CLUF à plusieurs pages que vous devez accepter, vous pouvez accéder à la partie acceptée en plaçant un
q
avant le reste de votre commande accept (puisque tout ce dont vous avez besoin est une commande de sortie acceptéeless
, vous pouvez également utiliserZZ
ouQ
).Par exemple, si le CLUF vous oblige à taper a
y
pour accepter, vous exécuterez:la source
Ne devriez-vous pas utiliser les propres outils de marionnettes pour installer des packages? Je suis moi-même un administrateur de radmind et je ne suis pas familier avec les marionnettes, mais une vérification sur leur wiki révèle qu'il existe un outil appelé pkgdmg qui pourrait faire l'équivalent de ce que vous essayez d'accomplir.
http://projects.puppetlabs.com/projects/puppet/wiki/Puppet_Mac_Osx#packagepkgdmg
la source