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


11

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上の番号と必要な番号の間で混乱しています...

回答:


14

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

rpm -q libxcb-devel

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

exclude=libxcb-devel

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


1
# 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


yumのダウングレードは利用できないようです。それは最近の追加ですか?バージョンロックのヒントをありがとう、聞いたことがない。
dargaud

静的リンクのリスクを回避するために、develを削除したと思います。
dargaud、2015

1
yumのダウングレードは、少なくともRHEL6以降で利用可能です
doktor5000
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.