yum
我正在尝试使用 DirectAdmin 在相当旧的 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 在某种程度上配置错误,或者我有两个不同版本的 RPM。我可以做什么来诊断问题并最终找到解决方案?
答案1
我认为这是你的 rpm 安装不知何故关闭的。我预计在安装了 yum 3.2.22 的 CentOS 5.11 上,您的 rpm 版本将是 4.4.2.3,而不是 4.3.3
具体来说,rpm-libs 软件包安装 yum 3.2.22 需要的 /usr/lib64/librpmdb-4.4.so,但我猜你有 /usr/lib64/librpmdb-4.3.so
我建议您从更新存储库下载新的 rpm-*4.4.*rpm 并手动使用 rpm 安装它们。