Désosser un rpm

Désosser un rpm

Il m'a quelquefois été nécessaire de retrouver les options utilisées à la compilations d'un RPM. Ne sachant pas comment faire, j'ai fait comme tout le monde... j'ai googlé. Je vous mets donc ci-dessous le résultat de mes recherches et de mes tests. Cet article explique également comment retrouver tous les fichiers contenus dans un paquet sans l'installer.

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

Source : https://unix.stackexchange.com/questions/134914/how-do-i-determine-which-configuration-options-an-rpm-package-is-built-with?utm_medium=organic&utm_source=google_rich_qa&utm_campaign=google_rich_qa

Ajouter un commentaire

Articles en relation