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
RPM 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が存在します。しかし、両側は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!
実際には、インストールが発生した場所を除くすべての場所で両方のアーキテクチャが言及されていますが、インストールはまだ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を除いて解決されました。
答え2
アーチサポートを確認してください。私はx86_64パッケージを使用しているか、必要であると言いましたが、i386パッケージを持っています。
問題は、 "/etc/yum.conf"ファイルのアーチサポートに関連している可能性があります。変更してみてください - >
multilib_policy=all
受信者->
multilib_policy=best
これを実行してください:
yum clean all
次に、パッケージの更新を実行し、必要なパッケージをインストール/アップグレードします。
また、次の公式リンクを確認してください。