Red Hat Training
A Red Hat training course is available for Red Hat Satellite
Chapitre 8. RPM
Les administrateurs déploieront souvent des applications personnalisées faisant partie d'installations automatisées, qui ne sont pas fournies par Red Hat, comme des logiciels de sauvegarde et de monitoring. Pour ce faire, le logiciel en question doit être mis sous paquetage de type RPM. Un environnement de construction RPM peut être installé sur un système fonctionnant sous Red Hat Enterprise Linux. Remarquez que le système de construction doit contenir la même version de paquetages que celle utilisée dans les systèmes cibles. Cela signifie qu'un système Red Hat Enterprise Linux 5 doit être utilisé pour construire des RPM pour des systèmes basés sur Red Hat Enterprise Linux 5, et un système Red Hat Enterprise Linux 6 pour des RPM Red Hat Enterprise Linux 6.
Le paquetage
rpm-build
doit être installé sur le système de construction comme prérequis minimum. Vous pourriez aussi nécessiter des paquetages supplémentaires, comme des compileurs et des bibliothèques.
Les paquetages RPM prêts à la production devraient être signés avec une clé GPG, qui permet aux utilisateurs de vérifier l'origine et l'intégrité des paquetages. La phrase de passe de la clé GPG utilisée pour signer les RPM ne devrait être connue que par un groupe d'administrateurs de confiance.
Procédure 8.1. Créer une clé GPG
Important
Les commandes suivantes initieront la création d'une clé GPG et l'exporteront sous un format convenable pour une distribution aux systèmes client. La clé créée devrait être stockée de manière sûree et une copie de sauvegarde devrait être effectuée.
- Créez un répertoire pour la création de la clé :
mkdir -p ~/.gnupg
- Générez la paire de clés :
gpg --gen-key
Vous devrez sélectionner le type de clé, la taille de la clé et pour combien de temps celle-ci devrait être valide (appuyez sur Entrée pour accepter les valeurs par défaut). Vous devrez aussi spécifier un nom, un commentaire et une adresse électronique :Real name: rpmbuild Email address: rpmbuild@example.com Comment: this is a comment You selected this USER-ID: "rpmbuild (this is a comment) <rpmbuild@example.com>" Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit?
Appuyez sur O pour accepter les détails et continuer. - Répertoriez toutes les clés avec leurs empreintes :
gpg --list-keys --fingerprint
- Exportez les clés :
gpg --export --armor "rpmbuild <rpmbuild@example.com>" > EXAMPLE-RPM-GPG-KEY
- Importez la clé sur la base de données RPM pour permettre une vérification de l'origine et de l'intégrité RPM en exécutant
gpg --import
en tant que super-utilisateur (root) sur tous les systèmes cibles :rpm --import EXAMPLE-RPM-GPG-KEY
Ceci se produira automatiquement pendant des installations de clients et devra être exécuté manuellement. - Une fois qu'un RPM a été créé, il peut être signé avec la clé GPG et téléchargé sur le correct canal :
rpm --resign package.rpm rhnpush --server=http[s]://satellite.server/APP package.rpm --channel=custom-channel-name
- Pour vérifier un paquetage RPM, rendez-vous sur le répertoire contenant le paquetage et exécutez les commandes suivantes :
rpm –qip package.rpm rpm -K package.rpm
Procédure 8.2. Construire des RPM
- Créez un compte utilisateur non-privilégié nommé
rpmbuild
pour construire des paquetages. Ceci permettra à plusieurs administrateurs de partager l'environnement de construction et la clé GPG. - Dans le répertoire d'accueil de l'utilisateur
rpmbuild
,/home/rpmbuild
, créez un fichier nommé.rpmmacros
:touch /home/rpmbuild/.rpmmacros
- Ouvrez le fichier
.rpmmacros
dans votre éditeur de texte préféré et ajoutez les lignes suivantes._gpg_name
doit correspondre au nom de la clé GPG utilisé pour la signature des RPM :%_topdir %(echo $HOME)/rpmbuild %_signature %gpg %_gpg_name rpmbuild <rpmbuild@example.com>
La liste de répertoires du répertoire du niveau le plus haut défini (dans l'exemple ci-dessus,/home/rpmbuild/rpmbuild
) doit posséder la même structure de répertoires que celle présente sous/usr/src/redhat
.
Exemple 8.1. Fichier de spécifications RPM
Ci-dessous figure un exemple de base d'un fichier de spécifications RPM. Lors de sa construction, il devrait se trouver dans le répertoire
SPECS
sous _topdir
, comme définit dans le fichier .rpmmacros
de l'utilisateur. Les fichiers source et correctif correspondants devraient se trouver dans le répertoire SOURCES
.
Name: foo Summary: The foo package does foo Version: 1.0 Release: 1 License: GPL Group: Applications/Internet URL: http://www.example.org/ Source0 : foo-1.0.tar.gz Buildroot: %{_tmppath}/%{name}-%{version}-%{release}-root Requires: pam BuildPrereq: coreutils %description This package performs the foo operation. %prep %setup -q %build %install mkdir -p %{buildroot}/%{_datadir}/%{name} cp -p foo.spec %{buildroot}/%{_datadir}/%{name} %clean rm -fr %{buildroot} %pre # Add user/group here if needed %post /sbin/chkconfig --add food %preun if [ $1 = 0 ]; then # package is being erased, not upgraded /sbin/service food stop > /dev/null 2>&1 /sbin/chkconfig --del food fi %postun if [ $1 = 0 ]; then # package is being erased # Any needed actions here on uninstalls else # Upgrade /sbin/service food condrestart > /dev/null 2>&1 fi %files %defattr(-,root,root) %{_datadir}/%{name} %changelog * Mon Jun 16 2003 Some One <one@example.com> - fixed the broken frobber (#86434)