Désarchiver un rpm

Saviez vous que les fichier RPM n’étaient finalement que des archives contenant l’intégralité de la configuration, des exécutables et des informations nécessaires à faire fonctionner le logiciel ? En partant de ce principe, il est possible de désarchiver un RPM. C’est sur quoi on va se consacrer aujourd’hui dans ce tutoriel.

Pour l’exemple prenons ntp, paquet assez classique que tout le monde a probablement déjà installé.

La première chose à faire est de télécharger les sources du paquet, pour ca il suffit d’ajouter l’option –source à yumdownloader :

# sudo yumdownloader –source ntp
Loaded plugins: fastestmirror
Enabling updates-source repository
Enabling epel-source repository
Enabling base-source repository
Enabling extras-source repository
Loading mirror speeds from cached hostfile
* epel: mirror.freethought-internet.co.uk
* epel-source: mirror.freethought-internet.co.uk
* remi-php73: mirror.netweaver.uk
* remi-safe: mirror.netweaver.uk
ntp-4.2.6p5-29.el7.centos.src.rpm | 4.1 MB 00:00:01

On dispose donc du rpm des sources :

# ll
total 4248
-rw-r–r–. 1 root root 4343855 Aug 30 01:28 ntp-4.2.6p5-29.el7.centos.src.rpm

Ensuite on va créer un dossier, si déplacer et y décompressera le rpm :

# mkdir folder; cd folder
# rpm2cpio ../ntp-4.2.6p5-29.el7.centos.src.rpm | cpio -ivd
ntp-4.2.4p7-getprecision.patch
ntp-4.2.6p1-cmsgalign.patch
ntp-4.2.6p1-linkfastmath.patch
ntp-4.2.6p1-retcode.patch
ntp-4.2.6p1-sleep.patch
ntp-4.2.6p3-bcast.patch
ntp-4.2.6p3-broadcastdelay.patch
ntp-4.2.6p4-droproot.patch
ntp-4.2.6p4-htmldoc.patch
ntp-4.2.6p5-backfwdstep.patch
ntp-4.2.6p5-clockstate.patch

On va maintenant trouver dans tous les fichiers nécessaire à l’installation :

# ll
total 4652
-rw-rw-r–. 1 root root 559 Oct 7 20:08 ntp-4.2.4p7-getprecision.patch

-rw-rw-r–. 1 root root 604 Oct 7 20:08 ntp-4.2.6p5-staunsync.patch
-rw-rw-r–. 1 root root 4202539 Oct 7 20:08 ntp-4.2.6p5.tar.gz
-rw-rw-r–. 1 root root 37821 Oct 7 20:08 ntp-4.2.6p5-tsyncdriver.patch
-rw-rw-r–. 1 root root 717 Oct 7 20:08 ntp-4.2.6p5-updatebclient.patch
-rw-rw-r–. 1 root root 3902 Oct 7 20:08 ntp-4.2.6p5-xleap.patch
-rw-rw-r–. 1 root root 2006 Oct 7 20:08 ntp.conf
-rw-rw-r–. 1 root root 232 Oct 7 20:08 ntp.cryptopw
-rw-rw-r–. 1 root root 272 Oct 7 20:08 ntpdate.service
-rw-rw-r–. 1 root root 111 Oct 7 20:08 ntpdate.sysconfig
-rwxrwxr-x. 1 root root 806 Oct 7 20:08 ntpdate.wrapper
-rwxrwxr-x. 1 root root 2227 Oct 7 20:08 ntp.dhclient
-rw-rw-r–. 1 root root 249 Oct 7 20:08 ntpd.service
-rw-rw-r–. 1 root root 45 Oct 7 20:08 ntpd.sysconfig
-rw-rw-r–. 1 root root 86 Oct 7 20:08 ntp.keys
-rw-rw-r–. 1 root root 49921 Oct 7 20:08 ntp.spec
-rw-rw-r–. 1 root root 3634 Oct 7 20:08 ntpstat-0.5.tar.gz
-rw-rw-r–. 1 root root 1518 Oct 7 20:08 ntpstat-compat.patch
-rw-rw-r–. 1 root root 78 Oct 7 20:08 ntp.step-tickers
-rw-rw-r–. 1 root root 260 Oct 7 20:08 ntp-wait.service
-rw-rw-r–. 1 root root 304 Oct 7 20:08 sntp.service
-rw-rw-r–. 1 root root 58 Oct 7 20:08 sntp.sysconfig

Ensuite on va pouvoir lire le fichier ntp.spec qui contient notamment les options utilisées à la configuration :

# %configure \
–sysconfdir=%{_sysconfdir}/ntp/crypto \
–with-openssl-libdir=%{_libdir} \
–without-ntpsnmpd \
–enable-all-clocks –enable-parse-clocks \
–enable-ntp-signd=%{_localstatedir}/run/ntp_signd \
–disable-local-libopts

Voila si vous avez tout suivi de bout en bout vous êtes maintenant capable de désarchiver un RPM.

Si cet article vous a plus vous trouverez ma source ici et d’autre article en lien avec le monde du système ici

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *