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上の番号と必要な番号の間で混乱しています...
インストール済みのバージョンを知りたい場合は、次のコマンドを実行します。
rpm -q libxcb-devel
このパッケージへのアップグレードを防止する場合は、パッケージをyum exclude
構成に追加できます。以下を/etc/yum.conf
のmain
セクションに追加します。
exclude=libxcb-devel
ライブラリのバージョン(例:libxcb.so.1.1.0
)は、パッケージのバージョンを追跡することはほとんどなく、APIの変更を追跡することを目的としています。
# 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