Jak znaleźć numer wersji zainstalowanej biblioteki?

12

Pytanie dotyczy RedHat / CentOS. Jestem trochę zdezorientowany między pakietem a biblioteką i tym, jak przypiąć je do stałej wersji.

W najnowszych wersjach libxcb występuje błąd rollover X11, który wpływa na moje programy w C. libxcb-1.5-1 nie ma tego błędu.

Więc zrobiłem:

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

A teraz błąd zniknął, a moje oprogramowanie działa dobrze.

Przewiń do przodu o kilka tygodni, a błąd powróci.

# 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

Ale czy to zainstalowana wersja czy wersja dostępna za pośrednictwem repozytorium? Jak mogę sprawdzić, która wersja libxcb jest obecnie zainstalowana?

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

Więc jestem zdezorientowany między numerem wersji pokazanym przez yum, numerem na .so i numerem, który chcę ...

dargaud
źródło

Odpowiedzi:

14

Jeśli chcesz wiedzieć, która wersja jest zainstalowana , po prostu uruchom:

rpm -q libxcb-devel

Jeśli chcesz zapobiec aktualizacjom tego pakietu, możesz dodać pakiet do excludekonfiguracji yum . Dodaj następujące mainsekcje do /etc/yum.conf:

exclude=libxcb-devel

Wersja biblioteki (np. libxcb.so.1.1.0In) bardzo rzadko śledzi wersję pakietu i służy do śledzenia zmian interfejsu API.

Larsks
źródło
1
# yum remove libxcb-devel
# rpm -Uvh --oldpackage libxcb-1.5-1.el6.i686.rpm 

Są to dwa różne pakiety. Wersja -devel służy do kompilacji, pakiet libxcb bez opcji -devel jest tym, przeciwko którym będą działać aplikacje.

Ponieważ usunąłeś wersję -devel, że nic nie jest zainstalowane, więc „yum info” pokazuje tylko najnowszą dostępną wersję (możesz użyć opcji --showduplicates, aby zobaczyć wszystkie wersje). Jeśli chcesz zatrzymać aktualizację, polecam zainstalowanie / użycie wtyczki versionlock na pakiecie libxcb ... chociaż można to zrobić ręcznie, używając wykluczeń.

Używaj również rpm bezpośrednio, możesz po prostu użyć: yum downgrade blah.rpm

James Antill
źródło
obniżenie wersji mniam nie wydawało się dostępne. Czy to ostatni dodatek? Dzięki za wskazówkę dotyczącą wersji, nigdy o tym nie słyszałem.
dargaud
Usunęłem program, aby uniknąć ryzyka statycznego łączenia.
dargaud
1
obniżenie wersji yum jest dostępne od co najmniej RHEL6
doktor5000