ヤム/rpmの不一致

ヤム/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自体に関連しているかどうかはわかりません。を実行してupdatedbRPM Deleteを使用してrpm -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ビットパッケージはまだインストールされていません。何が起こっているのかを調べる過程で、強制的にrpm installを行うことができ、正常にインストールされましたrpm -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!

実際には、インストールが発生した場所を除くすべての場所で両方のアーキテクチャが言及されていますが、インストールはまだ1つしか行われませんでした。

ベストアンサー1

すべての32ビットRPMが同じように生成されるわけではありません。この問題の唯一のRPMは、RHNから直接ダウンロードされたRPMです。 yumを介してrhel-5-server-rpmsリポジトリにあるRPMを使用すると、すべてがうまく機能します。 rhn.redhat.comからダウンロードされた約50個の欠落RPMが問題の原因でした。

私たちの設定では、ダウンロードしたRPMはアナコンダを介してシステムに強制的にロードされます。

編集する

問題を最小限に抑えるために、各32ビットRPMを削除して64ビット/ noarch RPMを再インストールしてから32ビットRPMをインストールすると、問題が解決するようです。

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

何らかの理由でこれは私が見た8RPMを除いて解決されました。

おすすめ記事