yum / rpm不一致

哈尔纳

我正在使用RHEL 5(64位),并且遇到rpm / yum不一致的情况。当我尝试安装32位RPM时,当磁盘上仅存在64位版本时,我被告知已经安装了RPM:

$ rpm -Uvh ./libsysfs-2.1.0-1.el5.i386.rpm
Preparing...                ########################### [100%]
        package libsysfs-2.1.0-1.el5.i386 is already installed

$ rpm -q libsysfs --qf '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n
libsysfs-2.1.0-1.el5.x86_64

我尝试重建数据库,但是出现相同的错误。

我已验证未实际安装RPM。运行时,rpm -qp ./libsysfs-2.1.0-1.el5.i386.rpm我可以确认列出的文件在系统上不存在。

我想念什么?RPM还可以查看是否已安装RPM吗?

编辑1

不知道这是否与RPM本身有关。运行updatedb,用擦除RPMrpm -e libsysfs并尝试同时安装两者之后,我收到一个错误,提示已添加软件包:

$ rpm -e libsysfs
$ rpm -Uvh ./libsysfs-2.1.0-1.el5.i386.rpm ./libsysfs-2.1.0-1.el5.x86_64.rpm
warning: package libsysfs = 2.1.0-1.el5 was already added, skipping libsysfs < 2.1.0-1.el5
Preparing...                ########################### [100%]
   1:libsysfs               ########################### [100%]

还有19个其他RPM正在执行相同的操作。

编辑2

32位软件包仍然无法安装。为了弄清楚正在发生的事情,我能够强行安装rpmrpm -Uvh --force libsysfs-2.1.0-1.el5.i386.rpm并成功安装了它。我可以验证文件系统上现在是否存在32位64位RPM中列出的文件。然而,rpmyum现在都认为只有32位版本,是在磁盘上:

$ rpm -q libsysfs --qf '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n
libsysfs-2.1.0-1.el5.i386

我可以成功擦除32位RPM,但是rpm即使所有文件都在适当的位置,该命令现在也无法识别64位变体:

$ rpm -e libsysfs.i386
$ rpm -q libsysfs --qf '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n
package libsysfs is not installed
$ rpm -qpl ./libsysfs-2.1.0-1.el5.x86_64.rpm
/usr/lib64/libsysfs.so.2
/usr/lib64/libsysfs.so.2.0.1
...
/usr/share/doc/libsysfs-2.1.0/libsysfs.txt

$ ls /usr/lib64/libsysfs.so.2
/usr/lib64/libsysfs.so.2

重建RPM数据库时,仍然找不到libsysfs RPM。

$ cd /var/lib/rpm
$ rm -f __db*
$ /usr/lib/rpm/rpmdb_verify Packages
$ mv Packages Packages.orig
$ /usr/lib/rpm/rpmdb_dump Packages.orig | /usr/lib/rpm/rpmdb_load Packages
$ /usr/lib/rpm/rpmdb_verify Packages
$ rpm -v --rebuilddb

我得出的结论是,一定存在某种RPM数据库损坏,但不知道从何而来。

编辑3

为了更好地了解正在发生的事情,我擦除了libsysfs并尝试了该yum localinstall选项,但安装程序似乎仍然将32位和64位选项视为同一件事:

$ yum localinstall ./libsysfs-2.1.0-1.el5.x86_64.rpm ./libsysfs-2.1.0-1.el5.i386.rpm
...
Resolving Dependencies
--> Running transaction check
---> Package libsysfs.i386 0:2.1.0-1.el5 set to be updated
---> Package libsysfs.x86_64 0:2.1.0-1.el5 set to be updated
--> Finished Dependency Resolution

Dependencies Resolved

===============================================================================
Packages      Arch       Version         Repository                      Size 
===============================================================================
Installing:
 libsysfs     i386       2.1.0-1.el5     /libsysfs-2.1.0-1.el5.i386      140 k
 libsysfs     x86_64     2.1.0-1.el5     /libsysfs-2.1.0-1.el5.x86_64    141 k

Transaction Summary
===============================================================================
Install      2 Package(s)
Upgrade      0 Package(s)

Total Size: 281 k
...
Running Transaction:
  Installing     : libsysfs                      1/1
Installed products updated.

Installed:
  libsysfs.i386 0:2.1.0-1.el5           libsysfs.x86_64 0:2.1.0-1.el5

Complete!

我注意到,除了实际进行安装的任何地方,都提到了两种体系结构,但是安装仍然只执行一种。

哈尔纳

似乎并非每个32位RPM都是相同的。唯一出现此问题的RPM是直接从RHN下载的RPM。如果我只使用yum的rhel-5-server-rpms仓库中提供的RPM,则一切正常。从rhn.redhat.com下载缺少的50个左右RPM导致了此问题。

在我们的设置中,已下载的RPM通过anaconda强制安装在系统上。

编辑

为了最大程度地减少此问题,看起来就像卸载每个32位RPM,重新安装64位/ noarch RPM,然后安装32位RPM一样。

yum erase '*.i386'
yum reinstall '*.x86_64' --exclude=filesystem
yum install '<rpm>.i386'

由于某种原因,这清除了除我看到的所有RPM之外的所有8个RPM。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章