sbarcik.free.fr

28avr/100

Rpmrebuild, le rpm pour les nuls

Rpmrebuild est un petit outil, qui n’est pas fourni en standard dans les distributions, mais qui deviendra vite indispensable à toute personne qui administre plusieurs serveurs GNU/Linux sous redhat ou dérivée.

Pourquoi utiliser rpmrebuild ?

Si vous utilisez une distribution Redhat ou dérivée, vous utilisez forcément des packages au format .rpm pour installer de nouveaux logiciels. Une fois ces logiciels installés, vous modifiez les fichiers de configuration de manière à les adapter à vos besoins. Puis, bien évidemment, vous faites une sauvegarde de vos fichiers de configuration pour pouvoir les restaurer en cas de problèmes.

La méthode habituellement employée est de copier les fichiers de configuration sur un autre support(cdrw, dvd, autre repertoire). C’est assurément une bonne chose que de faire de cette manière, mais cela m’ennuie pour 3 raisons :

- Il est fastidieux de recopier les fichiers de configuration au bons endroits, en pensant à préserver les droits en cas de réinstallation du système.
- Difficile de gérer, de classer, différentes versions des fichiers de configuration.(renommage de fichiers, création d’arborescence)
- Difficile pour une personne ne connaissant pas trop Linux (il y en a encore ?) de réinstaller un logiciel.

Dans un but de gain de temps, mais aussi pour permettre à un "non-initié" de réinstaller de manière quasi automatisée, une solution complète en peu de temps, j’utilise rpmrebuild.

Comme sont nom l’indique, ce petit logiciel que l’on doit à Eric Gerbier, permet principalement de recréer un fichier rpm à partir des fichiers installés.

Il existe des outils de reconstruction de package, rpmbuild fournis avec rpm, mais cela oblige à désinstaller les fichiers du rpm qu’on vient de créer.

Utilisation simple

Nous allons utiliser rpmrebuild, en reconstruisant le paquet openssh-server d’un serveur en production pour pouvoir l’exporter et configurer tous les autres serveurs.

Rpmrebuild peut-être appelé de deux façons différentes :

[root@hadopi ~]# rpm --rpmrebuild openssh-server

ou

[root@hadopi ~]# rpmrebuild openssh-server

Ce qui donne bien évidemment le même résultat :

Traitement des fichiers: openssh-server-3.9p1-8.0.1
Ecrit: /usr/src/redhat/RPMS/i386/openssh-server-3.9p1-8.0.1.i386.rpm
result: /usr/src/redhat/RPMS/i386/openssh-server-3.9p1-8.0.1.i386.rpm

Comme vous pouvez le voir, dans sa forme la plus simple, il suffit d’appeler rpmrebuild suivi du nom du package que l’on veut reconstuire. Par défaut, les packages créés sont sauvegardés dans /usr/src/redhat/RPMS/i386/, et le nom de package est le même que celui installé sur le système.

Il n’est pas nécesaire d’être root pour utiliser rpmrebuild, cependant, il vous faudra indiquer un répertoire ou savegarder le rpm avec l’option -d nom_du_repertoire. Vous devez aussi avoir les droits sur les fichiers qui vont composer le rpm.

Modifier un rpm à la volée

Un des autres intérêts de rpmrebuild, c’est la possibilité de modifier les fichiers spec [1]. Openssh est installé sur tous les serveurs que je dois gérer. A chaque installation, je dois :

- créer un utilisateur steph,
- modifier mon fichier de configuration pour l’authentification par clé asymétrique,
- créer un repertoire .ssh dans le répertoire utilisateur steph,
- copier ma clé publique dans le fichier authorized_keys

en utilisant l’option -e de rpmrebuild, il est possible d’éditer le fichier spec du rpm que nous allons reconstruire.

De cette manière, à partir d’un premier serveur correctement configuré et d’un fichier spec modifiable à la volée, nous allons créer notre propre package rpm openssh-server, qui lorsque nous l’installerons créera l’utilisateur steph, possedant un répertoire .ssh contenant ma clé publique, et avec une sshd_config correctement configuré, prêt à être utilisé.

[root@hadopi ~]# rpmrebuild -e openssh-server

Le fichier spec est ouvert dans votre éditeur préféré (<troll on>vi rulez</troll off>)

recherchez la section qui commence par %file et ajoutez

%dir attr(0600 steph steph) "/home/steph/.ssh"
%config %attr(0700 steph steph) "/home/steph/.ssh/authorized_keys"

Ce qui permet de :
- modifier les droits du répertoire .ssh qui sera créé dans la section %pre,
- rajouter un fichier de configuration authorized_keys, au rpm, avec les attribut 0700 appartenant à l’utilisateur et au groupe steph.

Puis, dans la section %pre, qui permet l’exécution de commandes avant l’installation du rpm, ajoutez l’utilisateur steph :

/usr/sbin/useradd -c "Utilisateur de maintenance" -s /bin/bash -d /home/steph steph 2> /dev/null || :

enfin, créez le répertoire .ssh dans le répertoire utilisateur :

/bin/mkdir /home/steph/.ssh

Sauvegardez et quittez votre fichier spec et répondez Y à la question Do you want to continue(y/N). Le traitement du rpm est ensuite le mème que vu précédemment. Lorsque vous installerez ce rpm sur un autre serveur, le paramétrage de ssh sera fait automatiquement et vous pourrez vous connecter avec l’utilisateur steph.

Changer le nom du rpm

Ce qu’il faudrait maintenant, c’est pouvoir donner un autre nom au rpm. Par exemple, appeler le rpm openssh-server-steph-fc3.i386.rpm (steph pour l’utilisateur, fc3 pour la fedora core 3 etc...). Utilisez alors la commande suivante :

[root@hadopi ~]# rpmrebuild --define "_rpmfilename %%{NAME}-steph-fc3.i386.rpm" -e openssh-server
Do you want to continue ? (y/N) y
Traitement des fichiers: openssh-server-3.9p1-8.0.1
Ecrit: /usr/src/redhat/RPMS/openssh-server-steph-fc3.i386.rpm
result: /usr/src/redhat/RPMS/openssh-server-steph-fc3.i386.rpm

C’est mieux non ?

Inconvénients

- Rpmrebuild n’est pas capable de recréer tous les packages. ainsi, les rpm contenant des fichiers avec des caractères "réservés" [2] (* .. ?) ne peuvent pas être reconstruit par rpmrebuild.

- Les sommes md5 ne correspondent plus aux sommes du rpm d’origine (logique non ?)

- Les signatures gpg ou pgp sont perdues.

Plugins

Rpmrebuild inclus quelques plugins destinés à ajouter d’autres fonctionnalités. Vous pouvez utiliser par exemple le plugin nodoc.plug de la manière suivante ;

rpmrebuild --include /chemin/vers/nodoc.plug openssh-server

ce qui aura pour but de créer un package openssh-server sans les pages de manuel ni la documentation du logiciel. [3]

Conclusion

Comme le dit si bien le titre de l’article, rpmrebuild, c’est le rpm pour les nuls. Facilité d’emploi, de configuration, de modifications. Rpmrebuild possède néanmoins d’autres options, ou plugins, plus difficiles à utiliser, permettant notamment la gestion des dépendances.

J’espère que cet article vous aura donné envie d’intégrer rpmrebuild à votre trousse à outils de l’admin linux.

Et n’oubliez surtout pas : man rpmrebuild et rpmrebuild --help.

liens utiles

Le site de rpmrebuild

RPM-Howto

Le site de Eric Gerbier

Taggé comme: Laisser un commentaire
DeliciousFacebookDigg
RSS FeedStumbleUponTwitter
Commentaires (0) Trackbacks (0)

Aucun commentaire pour l'instant


Laisser un commentaire


Aucun trackbacks pour l'instant