Comment connaître le numéro de version d'une bibliothèque installée?


12

Question concernant RedHat / CentOS. Je suis un peu confus entre le package et la bibliothèque et comment les épingler à une version fixe.

Il y a un bogue de retournement X11 dans les versions récentes de libxcb qui affecte mes programmes C. libxcb-1.5-1 n'a pas ce bogue.

J'ai donc fait:

# yum remove libxcb-devel
# rpm -Uvh --oldpackage libxcb-1.5-1.el6.i686.rpm 

Et maintenant, le bug a disparu et mon logiciel fonctionne bien.

Avance rapide de quelques semaines et le bug est de retour.

# yum info libxcb-devel
Loaded plugins: refresh-packagekit, security
Available Packages
Name       : libxcb-devel
Arch       : i686
Version    : 1.9.1
Release    : 2.el6
Size       : 1.0 M
Repo       : sl-security

Mais est-ce la version installée ou la version disponible via le repo? Comment savoir quelle version de libxcb est actuellement installée?

$ ll /usr/lib/libxcb.so*
lrwxrwxrwx 1 root root     15 Aug  6 03:38 /usr/lib/libxcb.so.1 -> libxcb.so.1.1.0*
-rwxr-xr-x 1 root root 130752 Oct 14  2014 /usr/lib/libxcb.so.1.1.0*
$ readelf -d /usr/lib/libxcb.so.1.1.0 | grep SONAME
 0x0000000e (SONAME)                     Library soname: [libxcb.so.1]

Je suis donc confus entre le numéro de version affiché par yum, le numéro sur le .so et le numéro que je veux ...

Réponses:


14

Si vous voulez savoir quelle version est installée , lancez simplement:

rpm -q libxcb-devel

Si vous souhaitez empêcher les mises à niveau de ce package, vous pouvez ajouter le package à la excludeconfiguration yum . Ajoutez ce qui suit à la mainsection dans /etc/yum.conf:

exclude=libxcb-devel

La version de la bibliothèque (par exemple, dans libxcb.so.1.1.0) suit très rarement la version du package et est destinée à suivre les modifications de l'API.


1
# yum remove libxcb-devel
# rpm -Uvh --oldpackage libxcb-1.5-1.el6.i686.rpm 

Ce sont deux packages différents. La version -devel est pour la compilation contre, le paquet libxcb sans -devel est contre lequel les applications seront exécutées.

Parce que vous avez supprimé la version -devel, il n'y a rien installé, donc "yum info" ne vous montre que la dernière version disponible (vous pouvez utiliser l'option --showduplicates pour voir toutes les versions). Si vous voulez arrêter la mise à niveau, je vous recommande d'installer / d'utiliser le plugin versionlock sur le paquet libxcb ... bien que cela puisse être fait manuellement en utilisant excludes.

Utilisez également rpm directement, vous pouvez simplement utiliser: yum downgrade blah.rpm


le downgrade de yum ne semblait pas disponible. Est-ce un ajout récent? Merci pour l'astuce versionlock, je n'en avais jamais entendu parler.
dargaud

Suppression du développement pour éviter les risques de liens statiques, je suppose.
dargaud

1
yum downgrade est disponible depuis au moins RHEL6
doktor5000
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.