Automatiser l'installation de beaucoup de packages
Contents
1 Introduction
Pkgadd c'est pas super sexy, ya pleins d'options mais un peu trop cachées à mon goût. Pour le boulot je devais déployer sur plusieurs machines l'installation d'environ 1000 packages. Sauf qu'a chaque installation d'un package, il demande d'entrer y puis entrée, ce qui devient rapidement pénible.
Pour remédier au problème, je regarde le man et je tombe sur l'argument -n qui est pas mal puisqu'il permet de s'affranchir du mode interractif. L'inconvénient, c'est qui ne fonctionne pas vraiment à merveille. J'ai donc cherché un peu sur le net et suis tombé sur le fichier de réponse. C'est un fichier dans lequel nous passons des options. Ces options sont testées lors de l'installation d'un package et ici nous les forçons par défaut pour ne pas être embêter.
Note : il existe aussi la commande pkgask qui permet de créer un fichier de réponse, mais qui a l'air d'avoir quelques limitations par rapport à cette méthode.
IMPORTANT : Ceci ne fonctionne pas pour les .pkg ! Convertissez les au préalable.
2 Configuration
2.1 Fichier de réponse
Un fichier de réponse peut être généré à l'aide de la commande pkgask :
pkgask |
pkgask -r /answer -d . <package> |
Ceci aura pour effet de générer un fichier de réponse "anwser". Ce fichier contient les options propres au package et ne peut être utilisé par aucun autre package.
Il se peut qu'en essayant de générer un fichier de réponse, la commande retourne ceci :
pkgask: ERROR: package does not contain an interactive request script Processing of request script failed. No changes were made to the system.
Ceci indique que le package ne contient aucune information de personnalisation et dans ce cas, l'utilisation d'un fichier d'admin est necessaire.
2.2 Fichier d'admin
Tous les packages ne permettent pas l'utilisation d'un fichier de réponse, c'est pourquoi nous pouvons également utiliser un fichier d'admin. Le fichier d'admin fonctionne de la même facon que le fichier de réponse mais utilise les options standard d'une installation de package plutôt que des options personnalisées propres au package.
Un template de fichier d'admin se trouve dans le répertoire "/var/sadm/install/admin/default". Copiez le, puis modifiez le pour satisfaire vos besoins.
Voici donc à quoi ressemble un fichier d'admin :
ATTENTION : Si vous souhaitez utiliser cette methode pour installer des packages dans le script "Finish" d'un jumpstart, n'oubliez pas de modifier le paramettre "basedir=default" en "basedir=/a/" qui correspond au point de montage de la partition au moment de l'installation
2.3 Script d'installation
Vous pouvez simplement vous placer dans le dossier en question et exécuter un pkgadd :
- Avec un fichier de réponse
pkgadd |
pkgadd -n -r /answer -d . * |
- Avec un fichier d'admin
pkgadd |
pkgadd -n -a /answer -d . * |
Vous devez spécifier les full paths quand vous utilisez le fichier réponse !
Ou sinon, vous pouvez utiliser ce script, je le préfère, mais bon a vous de voir :
- Avec un fichier de réponse
pkgadd |
for i in * ; do test -d /export/home/packages_migration/$i && pkgadd -n -r /answer -d . $i done |
- Avec un fichier d'admin
pkgadd |
for i in * ; do test -d /export/home/packages_migration/$i && pkgadd -n -a /answer -d . $i done |
Lancez la bête et vous serez tranquile !