Come faccio a trovare il numero di versione di una libreria installata?


12

Domanda relativa a RedHat / CentOS. Sono un po 'confuso tra pacchetto e libreria e come aggiungerli a una versione fissa.

C'è un bug di rollover X11 nelle recenti versioni di libxcb che influenza i miei programmi C. libxcb-1.5-1 non ha quel bug.

Così ho fatto:

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

E ora il bug è sparito e il mio software funziona bene.

Avanti veloce di alcune settimane e il bug è tornato.

# 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

Ma è la versione installata o la versione disponibile tramite il repository? Come posso sapere quale versione di libxcb è attualmente installata?

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

Quindi sono confuso tra il numero di versione mostrato da yum, il numero su .so e il numero che voglio ...

Risposte:


14

Se vuoi sapere quale versione è installata , esegui semplicemente:

rpm -q libxcb-devel

Se si desidera impedire gli aggiornamenti a questo pacchetto, è possibile aggiungere il pacchetto alla excludeconfigurazione yum . Aggiungi quanto segue alla mainsezione in /etc/yum.conf:

exclude=libxcb-devel

La versione della libreria (ad esempio, in libxcb.so.1.1.0) tiene traccia molto raramente della versione del pacchetto ed è pensata per tenere traccia delle modifiche alle API.


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

Questi sono due pacchetti diversi. La versione -devel è per la compilazione, il pacchetto libxcb senza -devel è quello contro cui verranno eseguite le applicazioni.

Poiché hai rimosso la versione -devel in cui non è installato nulla, quindi "yum info" mostra solo l'ultima versione disponibile (puoi usare l'opzione --showduplicates per vedere tutte le versioni). Se vuoi fermarlo, ti consiglio di installare / usare il plug-in versionlock sul pacchetto libxcb ... anche se può essere fatto manualmente usando exclude.

Usa anche rpm direttamente, puoi semplicemente usare: yum downgrade blah.rpm


il downgrade di yum non sembra disponibile. È un'aggiunta recente? Grazie per la punta del blocco versione, non ne avevo mai sentito parlare.
dargaud,

Rimosso lo sviluppo per evitare rischi di collegamenti statici, immagino.
Dargaud,

1
il downgrade di yum è disponibile almeno da RHEL6
doktor5000 il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.