Como descubro o número da versão de uma biblioteca instalada?

11

Pergunta relevante para RedHat / CentOS. Estou um pouco confuso entre pacote e biblioteca e como fixá-los em uma versão fixa.

Há um bug de substituição do X11 nas versões recentes do libxcb que afeta meus programas em C. A libxcb-1.5-1 não possui esse bug.

Então eu fiz:

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

E agora o bug se foi e meu software funciona bem.

Avanço rápido de algumas semanas e o bug está de volta.

# 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

Mas essa é a versão instalada ou disponível através do repositório? Como posso saber qual versão do libxcb está atualmente instalada?

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

Então, eu estou confuso entre o número da versão mostrado por yum, o número no .so e o número que eu quero ...

dargaud
fonte

Respostas:

14

Se você quiser saber qual versão está instalada , basta executar:

rpm -q libxcb-devel

Se você deseja impedir atualizações para este pacote, você pode adicionar o pacote à excludeconfiguração do yum . Adicione o seguinte à mainseção em /etc/yum.conf:

exclude=libxcb-devel

A versão da biblioteca (por exemplo, in libxcb.so.1.1.0) raramente rastreia a versão do pacote e serve para rastrear alterações na API.

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

Estes são dois pacotes diferentes. A versão -devel é para compilar, o pacote libxcb sem -devel é contra o qual os aplicativos serão executados.

Como você removeu a versão -devel que não tem nada instalado, então "yum info" mostra apenas a versão mais recente disponível (você pode usar a opção --showduplicates para ver todas as versões). Se você deseja interromper a atualização, eu recomendo instalar / usar o plugin versionlock no pacote libxcb ... embora isso seja feito manualmente usando exclusões.

Também use rpm diretamente, você pode apenas usar: yum downgrade blah.rpm

James Antill
fonte
yum downgrade não parecia disponível. Isso é uma adição recente? Obrigado pela dica versionlock, eu nunca tinha ouvido falar.
precisa saber é
Removido o desenvolvimento para evitar riscos de vinculação estática, eu acho.
dargaud 27/08/15
1
yum rebaixamento está disponível pelo menos desde RHEL6
doktor5000