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 ...

Dargaud
la source

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.

larsks
la source
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

James Antill
la source
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