Bagaimana cara mengetahui nomor versi pustaka yang diinstal?

12

Pertanyaan yang relevan dengan RedHat / CentOS. Saya agak bingung antara paket dan pustaka dan bagaimana menyematkannya ke versi yang sudah diperbaiki.

Ada bug rollover X11 di versi libxcb terbaru yang memengaruhi program C saya. libxcb-1.5-1 tidak memiliki bug itu.

Jadi saya melakukannya:

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

Dan sekarang bug sudah hilang dan perangkat lunak saya berfungsi dengan baik.

Maju cepat beberapa minggu dan bug kembali.

# 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

Tetapi apakah itu versi yang diinstal atau versi yang tersedia melalui repo? Bagaimana saya tahu versi libxcb mana yang saat ini diinstal?

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

Jadi saya bingung antara nomor versi yang ditunjukkan oleh yum, nomor pada .so dan nomor yang saya inginkan ...

dargaud
sumber

Jawaban:

14

Jika Anda ingin tahu versi apa yang diinstal , jalankan saja:

rpm -q libxcb-devel

Jika Anda ingin mencegah upgrade ke paket ini, Anda dapat menambahkan paket ke excludekonfigurasi yum . Tambahkan yang berikut ke mainbagian di /etc/yum.conf:

exclude=libxcb-devel

Versi pustaka (misalnya, dalam libxcb.so.1.1.0) sangat jarang melacak versi paket, dan dimaksudkan untuk melacak perubahan API.

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

Ini adalah dua paket berbeda. Versi -devel untuk kompilasi, paket libxcb tanpa -devel adalah aplikasi yang akan dijalankan.

Karena Anda menghapus versi -vel yang tidak ada yang diinstal, jadi "info yum" hanya menampilkan versi terbaru yang tersedia (Anda dapat menggunakan opsi --showduplicates untuk melihat semua versi). Jika Anda ingin menghentikannya, saya sarankan untuk menginstal / menggunakan plugin versilock pada paket libxcb ... meskipun itu dilakukan secara manual menggunakan tidak termasuk.

Juga gunakan rpm secara langsung, Anda bisa menggunakan: yum downgrade blah.rpm

James Antill
sumber
tampaknya penurunan peringkat tidak tersedia. Apakah itu tambahan terbaru? Terima kasih atas tip versinya, saya belum pernah mendengarnya.
dargaud
Menghapus devel untuk menghindari risiko tautan statis, saya kira.
dargaud
1
yum downgrade tersedia sejak setidaknya RHEL6
doktor5000