Rhel
如何找出已安裝庫的版本號?
與 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
如果你想阻止升級這個包,你可以將包添加到 yum
exclude
配置中。將以下內容添加到 中的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