我无法yum
在 Linux 机器上运行命令。
我收到以下错误:
dispsim:~$ yum
Failed to set locale, defaulting to C
Loading "rhnplugin" plugin
Loading "security" plugin
error: cannot open Packages index using db3 - Invalid argument (22)
error: cannot open Packages database in /var/lib/rpm
Traceback (most recent call last):
File "/usr/bin/yum", line 29, in ?
yummain.main(sys.argv[1:])
File "/usr/share/yum-cli/yummain.py", line 85, in main
base.getOptionsConfig(args)
File "/usr/share/yum-cli/cli.py", line 163, in getOptionsConfig
disabled_plugins=self.optparser._splitArg(opts.disableplugins))
File "/usr/lib/python2.4/site-packages/yum/__init__.py", line 164, in _getConf
ig
self._conf = config.readMainConfig(startupconf)
File "/usr/lib/python2.4/site-packages/yum/config.py", line 685, in readMainCo
nfig
yumvars['releasever'] = _getsysver(startupconf.installroot, startupconf.dist
roverpkg)
File "/usr/lib/python2.4/site-packages/yum/config.py", line 752, in _getsysver
idx = ts.dbMatch('provides', distroverpkg)
TypeError: rpmdb open failed
Redhat-release 是Red Hat Enterprise Linux 服务器版本 5.2 (Tikanga)
dispsim-1:~$ uname -a
Linux dispsim 2.6.18-92.el5 #1 SMP Tue Apr 29 13:16:12 EDT 2008 i686 i686 i386 GNU/Linux
我还尝试了以下步骤:
1. su
2. rm /var/lib/rpm/__db.00*
3. rpm --rebuilddb
但这并没有解决问题。对此有什么建议吗?
答案1
尝试以 su 身份执行此操作:
tar cvzf rpmdb-backup.tar.gz /var/lib/rpm
rm -f /var/lib/rpm/__db*
rpm --rebuilddb
rpm -qa | sort
如果失败,则先执行lsof | grep /var/lib/rpm
,如果发现任何错误,kill -9
则全部执行。
您也可以尝试这个序列:
rm -f /var/lib/rpm/__db*
rpm --initdb
rpm --rebuilddb
如果没有任何效果,请从备份(或几乎相同的计算机)复制 rpm 数据库。
有关语言环境的问题,请参阅文章在 CentOS 7 上调整区域设置,建议添加/etc/profile.d/locale.sh
如下命令:
export LANG=en_US.UTF-8
export LANGUAGE=en_US.UTF-8
答案2
看来您是从 2010 RPM 版本升级的。以前,SQLite 用于存储有关软件包的信息,现在则是 BDB。您可能需要迁移数据库。
为此,您可以运行以下命令:
rpm --define '_dbapi 4' --rebuilddb
mv /var/lib/rpm /var/lib/rpm.bak
mv /var/lib/rpm.rebuild /var/lib/rpm
然后您可以使用以下方法测试新数据库:
rpm -qa
那么它应该可以正常工作。