¿Cómo encuentro el número de versión de una biblioteca instalada?

11

Pregunta relevante para RedHat / CentOS. Estoy un poco confundido entre el paquete y la biblioteca y cómo anclarlos a una versión fija.

Hay un error de rollover X11 en las versiones recientes de libxcb que afecta mis programas en C. libxcb-1.5-1 no tiene ese error.

Así que lo hice:

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

Y ahora el error desapareció y mi software funciona bien.

Avance rápido unas semanas y el error está de vuelta.

# 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

¿Pero es esa la versión instalada o la versión disponible a través del repositorio? ¿Cómo puedo saber qué versión de libxcb está instalada actualmente?

$ 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]

Así que estoy confundido entre el número de versión que muestra yum, el número en el .so y el número que quiero ...

Dargaud
fuente

Respuestas:

14

Si desea saber qué versión está instalada , simplemente ejecute:

rpm -q libxcb-devel

Si desea evitar actualizaciones a este paquete, puede agregar el paquete a la excludeconfiguración de yum . Agregue lo siguiente a la mainsección en /etc/yum.conf:

exclude=libxcb-devel

La versión de la biblioteca (p. Ej., libxcb.so.1.1.0In) rara vez rastrea la versión del paquete, y está destinada a rastrear los cambios de API.

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

Estos son dos paquetes diferentes. La versión -devel es para compilar, el paquete libxcb sin -devel es contra qué aplicaciones se ejecutarán.

Debido a que eliminó la versión de desarrollo de que no hay nada instalado, por lo que "yum info" solo le muestra la última versión disponible (puede usar la opción --showduplicates para ver todas las versiones). Si desea detener la actualización, le recomiendo instalar / usar el complemento versionlock en el paquete libxcb ... aunque se puede hacer manualmente usando exclude.

También use rpm directamente, solo puede usar: yum downgrade blah.rpm

James Antill
fuente
yum downgrade no parecía disponible. ¿Es eso una adición reciente? Gracias por el consejo de versionlock, nunca había oído hablar de él.
dargaud
Se eliminó el desarrollo para evitar riesgos de enlaces estáticos, supongo.
dargaud
1
yum está disponible desde al menos RHEL6
doktor5000