Table of Contents
CENTOS : Créer un RPM simple
Table of Contents
RPM (RedHat Package Manager) est un système de gestion de paquets destiné aux systèmes RHEL. Ce tutoriel décrit comment créer un RPM pour empaqueter un simple script.
L'exemple développé ici présente une installation assez simple qui illustre :
- La création du répertoire /etc/mydumpadmin avec les droit 0755
- “L'installation” dans celui ci du fichier credentials.txt avec les droits 0600 (lecture/ecriture pour propriétaire seulement)
- “L'installation” dans celui ci du script mysql-dump.sh avec les droits d'exécution 0755
- “L'installation” dans celui ci du fichier README.md avec les droits 0644 (lecture/ecriture pour propriétaire seulement, lecture pour tout le monde)
- “L'installation” dans celui ci du fichier settings.conf avec les droits 0644 (lecture/ecriture pour propriétaire seulement, lecture pour tout le monde)
Préparation de l'environnement de build
Installation des packages requis
Installer les packages requis pour créer des fichiers rpm.
$ yum install rpm-build rpmdevtools
La structure de répertoire
Dans le répertoire dédié au rpm, créer la structure de répertoire requise à l'aide de la commande ci-dessous.
$ rpmdev-setuptree
La commande ci-dessus créera une structure de répertoire comme ci-dessous.
$ ls -l rpmbuild drwxr-xr-x 2 root root 6 octobre 25 03:09 CONSTRUIRE drwxr-xr-x 2 root root 6 octobre 25 03:09 RPMS drwxr-xr-x 2 root root 6 octobre 25 03:09 SOURCES drwxr-xr-x 2 racine racine 6 octobre 25 03:09 drwxr-xr-x 2 root root 6 octobre 25 03:09 SRPMS
Si la commande rpmdev-setuptree ne parvient pas à créer la structure, on peut la créer manuellement.
$ mkdir -p ~/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS,tmp}
Créer le fichier .rpmmacros
!!!Attention!!! Toutes les macros définies dans ~/.rpmmacros remplacent les macros système.
%_topdir% (echo $HOME)/rpmbuild
Utilisation de la macro %_topdir pour définir le répertoire racine de l'environnement de construction de RPM dans /home/[utilisateur]/rpmbuild.
Création du RPM
Copier les fichiers sous le répertoire SOURCES
Copier tous vos fichiers et dossiers dans le répertoire ~ /rpmbuild/SOURCES, qui sera ajouté dans le fichier rpm.
$ cd ~/rpmbuild/SOURCES $ ls -l mydumpadmin-1 -rw-r - r-- 1 racine racine 125 25 octobre 03:54 credentials.txt -rw-r - r-- 1 racine racine 4693 Oct 25 03:54 mysql-dump.sh -rw-r - r-- 1 racine racine 1008 25 oct. 03:54 LISEZMOI.md -rw-r - r-- 1 racine racine 3445 25 octobre 03:54 settings.conf
Créer une archive du code.
$ tar czf mydumpadmin-1.0.tar.gz mydumpadmin-1
Créer un fichier SPEC
Créer un fichier de spécification ~/rpmbuild/SPECS/mydumpadmin.spec en utilisant le contenu ci-dessous.
~/rpmbuild/SPECS/mydumpadmin.spec Name: mydumpadmin Version: 1 Release: 0 Summary: An Advance Bash Script for MySQL Database Backup Group: TecAdmin BuildArch: noarch License: GPL URL: https://github.com/tecrahul/mydumpadmin.git Source0: mydumpadmin-1.0.tar.gz %description Write some description about your package here %prep %setup -q %build %install install -m 0755 -d $RPM_BUILD_ROOT/etc/mydumpadmin install -m 0600 credentials.txt $RPM_BUILD_ROOT/etc/mydumpadmin/credentials.txt install -m 0755 mysql-dump.sh $RPM_BUILD_ROOT/etc/mydumpadmin/mysql-dump.sh install -m 0644 README.md $RPM_BUILD_ROOT/etc/mydumpadmin/README.md install -m 0644 settings.conf $RPM_BUILD_ROOT/etc/mydumpadmin/settings.conf %files /etc/mydumpadmin /etc/mydumpadmin/credentials.txt /etc/mydumpadmin/mysql-dump.sh /etc/mydumpadmin/README.md /etc/mydumpadmin/settings.conf %changelog * Tue Oct 24 2017 Rahul Kumar 1.0.0 - Initial rpm release
Modifier le nom du package, le chemin du script, le nom de l’archive, la description, etc., selon vos besoins.
Construire le RPM
Après avoir terminé les étapes ci-dessus, construire le RPM en exécutant la commande suivante.
$ cd ~/rpmbuild $ rpmbuild -ba SPECS/mydumpadmin.spec
Une fois la construction réussie, un fichier rpm sera créé, tel que ~/rpmbuild/RPMS/noarch/mydumpadmin-1-0.noarch.rpm.
Installer le rpm en utilisant la commande ci-dessous. Après vérification de l'installation, les fichiers sont correctement installés dans l'emplacement défini.
$ rpm -ivh mydumpadmin-1-0.noarch.rpm