[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
Ven 5 Oct 14:38:52 CEST 2007
Le 05/10/07, HAMMER Cédric Ext
ROSI/DPS<chammer.ext at orange-ftgroup.com> a écrit :
>
> Hello Eric,
>
> Voici donc le message que j'avais envoyé et qui n'est pas passé (en espérant que ce ne soit pas trop gros cette fois) ;).
Il est passé mais je coupe la suite (que j'ai lu :=)
pour alléger la réponse.
Je prie les techno-phobes sensibles qui èrent légitimement sur
cette liste d'ignorer les technicochonneries qui suivent :=).
Je dis ça afin de ne pas nuire à l'image du logiciel libre,
la discussion qui suit ne reflètent pas ce que doit connaitre un
utilisateur "normal" de logiciels libres.
M'enfin évidemment vous êtes libres comme nos chers logiciels :)
>
> Au final, mon problème est quasi résolu grâce à toi, car j'ai réussi à construire le rpm, mais maintenant j'aimerai bien savoir comment "nettoyer" le premier de ses références à glibc_2.3.4 pour les prochaines constructions de rpm ... Tu as une idée d'où pourrai(en)t se trouver cette(ces) entrée(s) ??
Je pense comme toi que l'install avortée de la glibc-2.3.4 a laissé des traces.
Ce doit être un des scripts 'find-requires' qui "génére" la fausse dépendance.
Pour vérifier tu peux essayer la chose suivante:
1) repérer les différents scripts find-requires par exemple:
locate rpm | grep requires
ce qui sur ma machine fedora 7 donne:
/usr/lib/rpm/find-requires
/usr/lib/rpm/find-requires.perl
/usr/lib/rpm/mono-find-requires
/usr/lib/rpm/redhat/find-requires
/usr/lib/rpm/redhat/find-requires.ksyms
/usr/lib/rpm/redhat/find-requires.libtool
/usr/lib/rpm/redhat/find-requires.pkgconfig
2) lancer le/les script/s sur ton exécutable par exemple:
echo /bin/bash | /usr/lib/rpm/find-requires ldd
ce qui chez moi donne:
libc.so.6
libdl.so.2
libtinfo.so.5
linux-gate.so.1
libc.so.6(GLIBC_2.0)
libc.so.6(GLIBC_2.1)
libc.so.6(GLIBC_2.2)
libc.so.6(GLIBC_2.3)
libc.so.6(GLIBC_2.3.4)
libc.so.6(GLIBC_2.4)
libdl.so.2(GLIBC_2.0)
si tu veux plus de détails sur l'exécution d'un script 'find-requires' tu peux
aussi faire:
echo /bin/bash | /bin/bash -x /usr/lib/rpm/find-requires ldd
Mon hypothèse est que lors de l'installation avortée de la glibc
la commande /usr/bin/ldd correspondant à la glibc 2.3.4 a été installée
à la place de l'ancienne et que c'est elle qui te "génére" cette dépendance
factice.
Tu peux vérifier la version de ldd en faisant ldd --version.
Tu peux aussi lancer la commande suivante sur ton binaire proftpd:
ldd -v /path/to/proftpd
tu devrais voir apparaître les "dépendances" comme
par exemple avec bash, chez moi ça donne:
ldd -v /bin/bash
linux-gate.so.1 => (0x00c8b000)
libtinfo.so.5 => /lib/libtinfo.so.5 (0x05a49000)
libdl.so.2 => /lib/libdl.so.2 (0x008a4000)
libc.so.6 => /lib/libc.so.6 (0x0074e000)
/lib/ld-linux.so.2 (0x00309000)
Version information:
/bin/bash:
libdl.so.2 (GLIBC_2.1) => /lib/libdl.so.2
libdl.so.2 (GLIBC_2.0) => /lib/libdl.so.2
libc.so.6 (GLIBC_2.4) => /lib/libc.so.6
libc.so.6 (GLIBC_2.3) => /lib/libc.so.6
libc.so.6 (GLIBC_2.2) => /lib/libc.so.6
libc.so.6 (GLIBC_2.3.4) => /lib/libc.so.6
libc.so.6 (GLIBC_2.1) => /lib/libc.so.6
libc.so.6 (GLIBC_2.0) => /lib/libc.so.6
/lib/libtinfo.so.5:
libc.so.6 (GLIBC_2.1.3) => /lib/libc.so.6
libc.so.6 (GLIBC_2.4) => /lib/libc.so.6
libc.so.6 (GLIBC_2.3) => /lib/libc.so.6
libc.so.6 (GLIBC_2.2) => /lib/libc.so.6
libc.so.6 (GLIBC_2.3.4) => /lib/libc.so.6
libc.so.6 (GLIBC_2.1) => /lib/libc.so.6
libc.so.6 (GLIBC_2.0) => /lib/libc.so.6
/lib/libdl.so.2:
ld-linux.so.2 (GLIBC_PRIVATE) => /lib/ld-linux.so.2
libc.so.6 (GLIBC_2.1.3) => /lib/libc.so.6
libc.so.6 (GLIBC_2.1) => /lib/libc.so.6
libc.so.6 (GLIBC_2.0) => /lib/libc.so.6
libc.so.6 (GLIBC_PRIVATE) => /lib/libc.so.6
/lib/libc.so.6:
ld-linux.so.2 (GLIBC_PRIVATE) => /lib/ld-linux.so.2
ld-linux.so.2 (GLIBC_2.3) => /lib/ld-linux.so.2
ld-linux.so.2 (GLIBC_2.1) => /lib/ld-linux.so.2
Tu peux aussi comparer la sortie de
ldd -v /bin/bash
sur ta machine créant des RPMs moisis avec celle qui fonctionne.
--
Erk
Plus d'informations sur la liste de diffusion Toulouse-ll