web-dev-qa-db-ja.com

インストールされているライブラリのバージョン番号を確認するにはどうすればよいですか?

RedHat/CentOSに関連する質問。パッケージとライブラリ、そしてそれらを固定バージョンに固定する方法について少し混乱しています。

最近のlibxcbバージョンには、私のCプログラムに影響するX11ロールオーバーバグがあります。 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上の番号と必要な番号の間で混乱しています...

11
dargaud

インストール済みのバージョンを知りたい場合は、次のコマンドを実行します。

rpm -q libxcb-devel

このパッケージへのアップグレードを防止する場合は、パッケージをyum exclude構成に追加できます。以下を/etc/yum.confmainセクションに追加します。

exclude=libxcb-devel

ライブラリのバージョン(例:libxcb.so.1.1.0)は、パッケージのバージョンを追跡することはほとんどなく、APIの変更を追跡することを目的としています。

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

これらは2つの異なるパッケージです。 -develバージョンはコンパイル対象です。-develなしのlibxcbパッケージは、アプリケーションの実行対象です。

何もインストールされていない-develバージョンを削除したため、「yum info」には最新の利用可能なバージョンのみが表示されます(すべてのバージョンを表示するには、-showduplicatesオプションを使用できます)。アップグレードを停止したい場合は、libxcbパッケージにversionlockプラグインをインストール/使用することをお勧めします...ただし、excludesを使用して手動で行うこともできます。

また、rpmを直接使用します。次のように使用できます:yumダウングレードblah.rpm

1
James Antill