如何查找已安装库的版本号?

如何查找已安装库的版本号?

与 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

但这是已安装的版本还是通过存储库提供的版本?我如何知道当前安装的是哪个版本的 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 上的数字和我想要的数字感到困惑......

答案1

如果你想知道是什么版本已安装, 赶紧跑:

rpm -q libxcb-devel

如果您想阻止升级此软件包,您可以将该软件包添加到 yumexclude配置中。将以下内容添加到main中的部分/etc/yum.conf

exclude=libxcb-devel

库版本(例如,在 中libxcb.so.1.1.0)很少跟踪包版本,并且旨在跟踪 API 更改。

答案2

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

这是两个不同的包。 -devel 版本用于编译,不带 -devel 的 libxcb 包是应用程序运行的对象。

因为你删除了 -devel 版本,所以没有安装任何东西,所以“yum info”只显示最新的可用版本(你可以使用 --showduplicates 选项查看所有版本)。如果您想停止升级,我建议在 libxcb 包上安装/使用版本锁插件...尽管可以使用排除手动完成。

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

相关内容