CentOS 5.11:yumがインストールされましたが、パッケージがまだありません。

CentOS 5.11:yumがインストールされましたが、パッケージがまだありません。

yumDirectAdminを使用して、かなり古いCentOS 5.11 VPSで非常に奇妙な問題を特定しようとしています。

次のコマンドを実行すると、パッケージがインストールされたtelnetことを示します。

# yum install telnet
...
Installed:
  telnet.x86_64 1:0.17-41.el5  

ただし、telnetまだ欠落している項目:

# which telnet
/usr/bin/which: no telnet in (/root/local/node/bin:/usr/local/share/npm/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/share/adt-bundle/tools:/root/share/adt-bundle/platform-tools)

私のYumバージョンは3.2.22です。

おそらく何かが間違っているというヒントは、rpm何とか別のバージョンがインストールされているようです。 RPMデータベースを確認しようとすると、データベースのバージョンが無効とマークされます。

# rpm --version
RPM version 4.3.3
# rpm --verify telnet
rpmdb: Program version 4.2 doesn't match environment version
error: db4 error(22) from dbenv->open: Invalid argument
error: cannot open Packages index using db3 - Invalid argument (22)
error: cannot open Packages database in /var/lib/rpm
package telnet is not installed

次のコマンドを使用してRPMデータベースを再構築する場合:

rm -rf /var/lib/rpm/__db* && rpm --rebuilddb

Yumは同様のエラーを提供しますが、最新バージョンについて文句を言います。

# yum update
Loaded plugins: fastestmirror
rpmdb: Program version 4.3 doesn't match environment version
error: db4 error(-30974) from dbenv->open: DB_VERSION_MISMATCH: Database environment version mismatch
error: cannot open Packages index using db3 -  (-30974)
error: cannot open Packages database in /var/lib/rpm

これらの/var/lib/rpm/__db*ファイルを削除すると、Yumは問題を克服することができましたが、インストールされたパッケージはまだ欠落しているようです。

Yumが誤って設定されているか、2つの異なるバージョンのRPMがあるようです。問題を診断し、最終的に解決策を見つけるにはどうすればよいですか?

答え1

私の考えでは、rpmのインストールが何とかオフになったと思います。 Yum 3.2.22がインストールされているCentOS 5.11では、rpmバージョンが4.3.3ではなく4.4.2.3になると予想しています。

特にyum 3.2.22をインストールするために必要なrpm-libsパッケージには/usr/lib64/librpmdb-4.4.soが必要ですが、/usr/lib64/librpmdb-4.3.soがあるようです。

アップデートリポジトリから新しいrpm-*4.4.*rpmをダウンロードし、rpmを使用して手動でインストールすることをお勧めします。

関連情報