[Toulibre] rpmbuild et dépendances, ou pourquoi y'a t-il une différence entre l'install par rpm et par compilation ?

Eric Noulard eric.noulard at gmail.com
Jeu 4 Oct 15:40:43 CEST 2007


2007/10/4, HAMMER Cédric Ext ROSI/DPS <chammer.ext at orange-ftgroup.com>:
>
> >>> - pour des besoins d'exploit, je tente une création d'rpm via
> >>> rpmbuilb -tb proftpd-1.3.1rc3-patched.tar.bz2
> >>
> >>On peut voir le .spec qu'il y a dans ce tarball ?
> >
> >Yes le voici ;)
> >
> >Merci,
> >Ced
>
> Bonjour Thomas (et les autres),
>
> As-tu pu voir quelque chose sur le .spec ?

Je rentre 5 min. dans la boucle car je n'ai pas eu le temps
avant.
Les dépendances que l'on trouve dans le .spec
sont "normales" et sont de 2 types:

Requires:		pam >= 0.72, /sbin/chkconfig, %{?_with_mod_tls:openssl
krb5-libs}, %{?_with_mod_facl:libacl}

C'est ce dont a besoin le paquet binaire pour être installable.

BuildPreReq:	pam-devel %{?_with_mod_tls:openssl-devel krb5-devel}

C'est ce dont tu as besoin pour "builder" le paquet.


Ensuite au moment où tu buildes avec
rpmbuild -bX

dans ton cas -bt (builder à partir du fichier tar)

rpmbuild va exécuter différentes parties du .spec
mais il va également appeler un certain nombre d'outils
qui sont suceptibles de rajouter des dépendances au RPM
binaire qui est produit.

Chez moi j'ai notamment un script:
/usr/lib/rpm/redhat/find-requires qui est appelé pour
rajouter les dépendances du genre libc.

A noter que le comportement de rpmbuild est guidé
par (au moins) un fichier de configuration "rpmrc".

Par defaut il est: /usr/lib/rpm/rpmrc (sauf si on a un ~/.rpmrc)
dans ce fichier rpmrc est indiqué (éventuellement)
un (ou plusieurs) fichier 'macro'
chez moi

macrofiles:    /usr/lib/rpm/macros:
/usr/lib/rpm/%{_target}/macros:
/etc/rpm/macros.*:
/etc/rpm/macros:
/etc/rpm/%{_target}/macros:~/.rpmmacros

dans ce/s fichier/s macros on peut trouver
des définitions du genre:

%__find_requires        /usr/lib/rpm/redhat/find-requires

(trouvé dans /usr/lib/rpm/redhat/macros)

bref je ne déroulerais pas complètement la pelote car
je ne l'ai jamais fait jusqu'au bout MAIS
on trouver "grace/à cause" de ça des dépendances
qu'on n'a pas spécifié dans des rpm binaires.

C'est aussi pour ça (entre autre)
qu'un "binaire" rpm fedora ne s'installe
pas "forcément facilement" sur une mandriva.

Mes exemples de fichiers rpmXXX sont d'une Fedora 7.

Pour finir
pour voir quelles sont les dépendances requises par
un rpm binaires:

rpm --requires -qp <file>.rpm

dans les requis on trouve également ce que le paquet fournit:

rpm --provides -qp <file>.rpm


Mon hypothèse concernant ton erreur serait que tu as des fichiers
de conf rpmbuild (rpmrc, macros etc...) qui contiennent des données erronées.

Peux-tu construire un autre rpm que celui qui te pose problème sur ta machine?
Quelle est la distro?

-- 
Erk



Plus d'informations sur la liste de diffusion Toulouse-ll