Rhel

如何找出已安裝庫的版本號?

  • May 23, 2018

與 RedHat/CentOS 相關的問題。我對包和庫以及如何將它們固定到固定版本有點困惑。

最近的 libxcb 版本中有一個 X11 翻轉錯誤,它影響了我的 C 程序。libxcb-1.5-1 沒有那個錯誤。

所以我做了:

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

現在錯誤消失了,我的軟體工作正常。

快進幾個星期,錯誤又回來了。

# 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

但這是已安裝的版本還是可通過 repo 獲得的版本?如何判斷目前安裝了哪個版本的 libxcb?

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

所以我對yum顯示的版本號,.so上的數字和我想要的數字感到困惑……

如果您想知道安裝了哪個版本,只需執行:

rpm -q libxcb-devel

如果你想阻止升級這個包,你可以將包添加到 yumexclude配置中。將以下內容添加到 中的main部分/etc/yum.conf

exclude=libxcb-devel

庫版本(例​​如 in libxcb.so.1.1.0)很少跟踪包版本,並且旨在跟踪 API 更改。

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

這是兩個不同的包。-devel 版本用於編譯,沒有 -devel 的 libxcb 包是應用程序執行的對象。

因為您刪除了沒有安裝任何東西的 -devel 版本,所以“yum info”只顯示最新的可用版本(您可以使用 –showduplicates 選項查看所有版本)。如果你想停止升級,我建議在 libxcb 包上安裝/使用 versionlock 外掛……儘管它可以使用排除手動完成。

也可以直接使用rpm,可以直接使用:yum downgrade blah.rpm

引用自:https://unix.stackexchange.com/questions/225138