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

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.


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


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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.