Mandriva




<< Page précédente

Mandriva RPM Howto - À propos des scripts de Pré- et Post-installation

Les bases

En fait, le paquetage rpm est davantage qu'une simple archive contenant des fichiers à décompresser dans des répertoires spécifiques sur le système hôte.

Le système fournit au programmeur une remarquable possibilité : les scripts de pré- et post-installation. Grâce à eux, le créateur du paquetage peut écrire un bout de code qui sera exécuté sur la machine cliente quand on installe ou quand on supprime le paquetage.

Ces scripts peuvent être composés de n'importe quelles commandes sh valides. En voici quatre :

Il existe certaines particularités de ces scripts que vous devez prendre en compte. Premièrement, chacun doit tenir dans un tampon de 8192, et deuxièmement, ils ne doivent pas être interactifs. Rien ne doit nécessité d'entrée manuelle, car cela brise les procédures rpm non interactives d'installation.

  • %pre : Ce script s'exécute juste avant l'installation du paquetage sur le système.
  • %post : Ce script s'exécute juste après l'installation du paquetage sur le système.
  • %preun : Ce script s'exécute juste avant la désinstallation du paquetage sur le système.
  • %postun : Ce script s'exécute juste après la désinstallation du paquetage sur le système.
Ces scripts ont un très grand rayon d'action et il faut les mettre au point avec beaucoup de soin pour ne pas gêner le système hôte. Il ne faut pas oublier que ces scripts s'exécutent en tant que root… Ce sont les tâches système qu'un administrateur système doit accomplir quand il installe un nouveau programme sur un système. Par exemple :
  • Ajouter un job cron qui lance le programme à intervalles fixés
  • Lancer chkconfig pour lancer le démon au moment du boot
  • ...

Gérer les mises à jour

Le fait qu'un paquetage puisse être mis à jour, et pas seulement installé ou retiré, rend la chose un peu plus délicate… Le problème vient de ce que le script %postun de la mise à jour s'exécute après le script %post de la vieille version. Et tout ce que fait %post est perdu...

Il est souvent utile de s'assurer qu'une action ne se produit que pendant une installation et non pendant une mise à jour. De même pour une action qui ne se produit que pendant une désinstallation et non pendant une mise à jour. Le mécanisme de rpm qui gère cela est un argument passé aux scripts %pre, %preun, %post et %postun par défaut.

Cet argument indique le nombre d'instances de ce rpm qui seront installées sur la machine après exécution du script courant. Par exemple, si un nouveau paquetage est installé, 0 sera passé à %pre et 1 sera passé à %post. Quand le paquetage est mis à jour, 1 sera passé au %pre du nouveau rpm, 2 sera passé au %post du nouveau rpm, 2 sera passé au %preun du vieux rpm et 1 sera passé au %postun du vieux paquetyage.

Table A-1. Valeurs des paramètres passés aux scripts pre et post

Paramètre Script %pre %post %preun %postun
Première installation 1 1 N/C N/C
Mise à jour 2 2 1 1
Désinstallation N/C N/C 0 0

Cela permettra au programmeur de prévoir des comportements différents à ses scripts selon qu'il s'agisse d'une installation ou d'une mise à jour.

  • Pour des scripts d'installation (%post, %pre) si $1 == "1" alors il s'agit d'une installation fraîche.
  • Pour des scripts de désinstallation (%postun, %preun), si $1 == "0", alors il s'agit d'une désinstallation complète, sinon il s'agit soit d'une mise à jour soit d'une installation avec ––force du même paquet.
Pour tester cette situation, la déclaration suivant est utilisée:
%postun
if [ $1 = 0 ]; then
 // Do stuff specific to uninstalls
fi
if [ $1 = 1 ]; then
 // Do stuff specific to upgrades
fi
Un simple test est donc suffisant pour appeler la bonne action au bon moment.

Page suivante >>


 


Multilingualism
RSS
RSS

Creator: yoho on 25/06/2005 at 02:32
(c) Mandriva 2007
1.1-SNAPSHOT.1715