OVH Cloud OVH Cloud

[Gentoo] Propreté de unmerge

4 réponses
Avatar
Jérémy JUST
Bonjour,

J'ai une Gentoo qui pour l'instant ne sert à rien d'autre qu'à être
mise à jour régulièrement.

Je viens de constater dans /usr la présence de pas mal de liens
symboliques pointant vers des fichiers qui ont été supprimés à
l'occasion d'une mise à jour (emerge --update) ou d'une suppression
(emerge --unmerge).
Par exemple:

/usr/lib/gcc/powerpc-unknown-linux-gnu/3.4.4/libgcc_s.so -> libgcc_s.so.1
(je suis passé en GCC-4.1.1)

/usr/lib/openldap/openldap/back_shell-2.2.so.7 -> back_shell-2.2.so.7.0.21
(les seuls versions de bibliothèques qui subsistent dans ce répertoire
sont en 2.3, pourtant il reste tous les liens vers des 2.2 inexistantes)


Ces liens n'appartiennent plus à aucun package:

# equery belongs /usr/lib/gcc/powerpc-unknown-linux-gnu/3.4.4/libgcc_s.so /usr/lib/openldap/openldap/back_shell-2.2.so.7
[ Searching for file(s) /usr/lib/gcc/powerpc-unknown-linux-gnu/3.4.4/libgcc_s.so,/usr/lib/openldap/openldap/back_shell-2.2.so.7 in *... ]
#


Y a-t-il une raison pour que le unmerge ait travaillé aussi salement?
Existe-t-il un outil pour supprimer ces liens de façon fiable (en vérifiant
qu'ils n'appartiennent bien à aucun package actuellement installé)?



--
Jérémy JUST <jeremy_just@netcourrier.com>

4 réponses

Avatar
Sébastien Monbrun aka TiChou
Dans le message <news:,
*Jérémy JUST* tapota sur f.c.o.l.configuration :

Bonjour,

Je viens de constater dans /usr la présence de pas mal de liens
symboliques pointant vers des fichiers qui ont été supprimés à
l'occasion d'une mise à jour (emerge --update) ou d'une suppression
(emerge --unmerge).

Y a-t-il une raison pour que le unmerge ait travaillé aussi salement?


Je ne vois qu'une et une seule raison à cela.

Certaines applications étant liées directement à une version précise d'une
bibliothèque, lorsqu'on met à jour cette bibliothèque vers une autre
version, emerge, pour ne pas casser le système, ne supprime alors pas
certains fichiers de l'ancienne bibliothèque et indique aussi à la fin de
l'installation de la nouvelle bibliothèque de recompiler/re-emerger les
paquets des applications liés avec l'ancienne version de la bibliothèque.
Pour cela, on est invité à lancer la commande revdep-rebuild --library
libfoo.so.x.y.z qui va chercher automatiquement les applications liées sur
l'ancienne bibliothèque et qui va ensuite « re-emerger » automatiquement les
paquets des applications trouvées. Enfin, une fois la commande
revdep-rebuild terminée, on nous demande de supprimer manuellement les
fichiers de l'ancienne bibliothèque. Et c'est là que parfois (je dis bien
parfois) des liens peuvent subsister. emerge estime peut être qu'il ne doit
pas les supprimer quand une application a été lié sur libfoo-0.3 alors que
libfoo-0.3 est un lien vers libfoo-0.3.5 et que la nouvelle bibliothèque est
libfoo-0.4.1.

Existe-t-il un outil pour supprimer ces liens de façon fiable (en
vérifiant qu'ils n'appartiennent bien à aucun package actuellement
installé)?


Je n'en connais pas, mais il ne serait pas trop difficile de faire un script
qui ferait ça. Sinon, je ne pense pas non plus qu'il y ait un risque de
supprimer tous les liens morts, même les liens qui appartiendraient
éventuellement à un paquet en place.

--
Sébastien Monbrun aka TiChou

Avatar
Jérémy JUST
Le Sun, 1 Oct 2006 15:54:00 +0200,

Je ne vois qu'une et une seule raison à cela.

Certaines applications étant liées directement à une version précise
d'une bibliothèque, lorsqu'on met à jour cette bibliothèque vers une
autre version, emerge, pour ne pas casser le système, ne supprime
alors pas certains fichiers de l'ancienne bibliothèque et indique
aussi à la fin de l'installation de la nouvelle bibliothèque de
recompiler/re-emerger les paquets des applications liés avec
l'ancienne version de la bibliothèque.


Pour GCC, j'ai effectivement fait toutes ces manips, pour passer
d'une version à l'autre sans tout casser au milieu.
Pour OpenLDAP, je n'ai pas fait ça consciemment.


Sinon, je ne pense pas non plus qu'il y ait un risque de supprimer
tous les liens morts, même les liens qui appartiendraient
éventuellement à un paquet en place.


Effectivement, au pire, on cassera quelque chose qui était déjà cassé
à cause de ce lien mort.

Bon, je vais faire un ménage un peu brutal, puis je vais re-emerger
les paquets qui dépendent des bibliothèques concernées. Ça me semble
plus sûr.


Merci pour ton explication.
Si de tels liens morts réapparaissent fréquemment, j'irai peut-être
suggérer chez Gentoo le développement d'un outil pour faire du ménage
le plus proprement possible.


--
Jérémy JUST

Avatar
Patator
Jérémy JUST wrote:
Bonjour,

J'ai une Gentoo qui pour l'instant ne sert à rien d'autre qu'à être
mise à jour régulièrement.

Je viens de constater dans /usr la présence de pas mal de liens
symboliques pointant vers des fichiers qui ont été supprimés à
l'occasion d'une mise à jour (emerge --update) ou d'une suppression
(emerge --unmerge).
Par exemple:

/usr/lib/gcc/powerpc-unknown-linux-gnu/3.4.4/libgcc_s.so -> libgcc_s.so.1
(je suis passé en GCC-4.1.1)


sous gentoo j'ai plusieurs gcc


gcc-config -l

[1] i686-pc-linux-gnu-3.3.6
[2] i686-pc-linux-gnu-3.3.6-hardened
[3] i686-pc-linux-gnu-3.3.6-hardenednopie
[4] i686-pc-linux-gnu-3.3.6-hardenednopiessp
[5] i686-pc-linux-gnu-3.3.6-hardenednossp
[6] i686-pc-linux-gnu-3.4.4
[7] i686-pc-linux-gnu-3.4.4-hardened
[8] i686-pc-linux-gnu-3.4.4-hardenednopie
[9] i686-pc-linux-gnu-3.4.4-hardenednopiessp
[10] i686-pc-linux-gnu-3.4.4-hardenednossp
[11] i686-pc-linux-gnu-3.4.6 *
[12] i686-pc-linux-gnu-3.4.6-hardened
[13] i686-pc-linux-gnu-3.4.6-hardenednopie
[14] i686-pc-linux-gnu-3.4.6-hardenednopiessp
[15] i686-pc-linux-gnu-3.4.6-hardenednossp
[16] i686-pc-linux-gnu-4.1.1


tu a du merdé quelques part

/usr/lib/openldap/openldap/back_shell-2.2.so.7 -> back_shell-2.2.so.7.0.21
(les seuls versions de bibliothèques qui subsistent dans ce répertoire
sont en 2.3, pourtant il reste tous les liens vers des 2.2 inexistantes)


Ces liens n'appartiennent plus à aucun package:

# equery belongs /usr/lib/gcc/powerpc-unknown-linux-gnu/3.4.4/libgcc_s.so /usr/lib/openldap/openldap/back_shell-2.2.so.7
[ Searching for file(s) /usr/lib/gcc/powerpc-unknown-linux-gnu/3.4.4/libgcc_s.so,/usr/lib/openldap/openldap/back_shell-2.2.so.7 in *... ]
#


Y a-t-il une raison pour que le unmerge ait travaillé aussi salement?
Existe-t-il un outil pour supprimer ces liens de façon fiable (en vérifiant
qu'ils n'appartiennent bien à aucun package actuellement installé)?





Avatar
Jérémy JUST
Le Mon, 02 Oct 2006 12:00:33 +0200,

sous gentoo j'ai plusieurs gcc

gcc-config -l

[1] i686-pc-linux-gnu-3.3.6
[2] i686-pc-linux-gnu-3.3.6-hardened
[3] i686-pc-linux-gnu-3.3.6-hardenednopie
[4] i686-pc-linux-gnu-3.3.6-hardenednopiessp
[5] i686-pc-linux-gnu-3.3.6-hardenednossp
[6] i686-pc-linux-gnu-3.4.4
[7] i686-pc-linux-gnu-3.4.4-hardened
[8] i686-pc-linux-gnu-3.4.4-hardenednopie
[9] i686-pc-linux-gnu-3.4.4-hardenednopiessp
[10] i686-pc-linux-gnu-3.4.4-hardenednossp
[11] i686-pc-linux-gnu-3.4.6 *
[12] i686-pc-linux-gnu-3.4.6-hardened
[13] i686-pc-linux-gnu-3.4.6-hardenednopie
[14] i686-pc-linux-gnu-3.4.6-hardenednopiessp
[15] i686-pc-linux-gnu-3.4.6-hardenednossp
[16] i686-pc-linux-gnu-4.1.1

tu a du merdé quelques part



C'est ton choix et ça n'a rien d'obligatoire.
Pour ma part, j'ai préféré supprimer l'ancien à chaque mise à jour:

<<<<<
# gcc-config -l
[1] powerpc-unknown-linux-gnu-4.1.1 *








--
Jérémy JUST