我正在使用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中列出的文件。然而,rpm
和yum
现在都认为只有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] 删除。
我来说两句