web-dev-qa-db-ja.com

CentOS Yum-既存のrpmdbの問題

開発ボックスにgitをインストールしようとすると、次のようになります。

You could try using --skip-broken to work around the problem
** Found 3 pre-existing rpmdb problem(s), 'yum check' output follows:
kernel-2.6.32-431.17.1.el6.x86_64 has installed conflicts bfa-firmware < ('0', '3.2.21.1',     '2'): bfa-firmware-3.0.3.1-1.el6.noarch
kernel-firmware-2.6.32-431.17.1.el6.noarch is a duplicate with kernel-firmware-2.6.32-358.23.2.el6.noarch
kernel-headers-2.6.32-431.17.1.el6.x86_64 is a duplicate with kernel-headers-2.6.32-358.23.2.el6.x86_64

どうすればこれを解決できますか? CentOS/RHELに慣れていない

ありがとう

6
Dave Melia

根本的な原因

Up2dateまたはyum更新プロセスの中断により、同じパッケージの複数のバージョンがインストールされました。

解決

  1. システムがRed Hat Enterprise Linux 5以降の場合、package-cleanupコマンドを使用できます。

$ package-cleanup --dupes $ package-cleanup --cleandupes

--dupesコマンドはマシンにインストールされている重複パッケージを一覧表示し、-cleandupesスイッチは古いバージョンを削除します。 package-cleanupコマンドは、yum-utilsパッケージによって提供されます。

  1. Package-cleanupが役に立たない場合、またはシステムがRed Hat Enterprise Linux 4の場合は、rpmを使用して手動でパッケージを削除します。

$ rpm -e --justdb <package-name>-<old-version>

'--justdb'スイッチは、パッケージを削除してもファイルシステムからファイルが削除されないようにするために使用され、rpmデータベースからのみ削除されます。

インストールされたパッケージに必要なため、一部の複製は削除されない場合があります。 --removenewestdupesで--cleandupesを試すか、-dupesで確認して手動で削除できます。

6
Ramazan Polat

私の場合、何かがおかしくなり、多くのパッケージが古いバージョンを削除せずに更新されていたことがわかりました。 RPM DBを再構築しようとしても問題は解決しませんでした。

機能している1つの解決策は、古いバージョンを削除して、新しいバージョンを再インストールすることです。

エラー出力を見ると、各行は基本的にpdate PackagePrevious Packageと重複しています。

    kernel-headers-2.6.32-431.17.1.el6.x86_64 is a duplicate with kernel-headers-2.6.32-358.23.2.el6.x86_64

以下は私にとってはうまくいくようです:

    rpm --erase --nodeps --noscript kernel-headers-2.6.32-358.23.2.el6.x86_64

このコマンドは、依存関係を削除したり、タスクに関連付けられたスクリプトを実行したりせずに、特定の以前のパッケージを削除するようにRPMに指示します。

次に、パッケージを再インストールする必要があります。

    yum reinstall kernel-headers

今回は、yumが最新バージョンを探して再インストールするため、正確なパッケージバージョンを指定する必要はありません。

YumはそのYumチェック操作の結果を各実行中に出力します。重複したパッケージがリストされなくなるまでこれを続けます。

RPMデータベースを直接照会できることに注意してください。たとえば、glibcという文字列を含むメッセージがたくさんある場合は、次のように、名前にその文字列が含まれるパッケージの簡単なリストを取得できます。

    rpm -qa | grep glibc | sort

これは次のようなものを生成する可能性があります:

    glibc-2.17-157.el7_3.5.x86_64
    glibc-common-2.17-157.el7_3.4.x86_64
    glibc-common-2.17-157.el7_3.5.x86_64
    glibc-devel-2.17-157.el7_3.5.x86_64
    glibc-headers-2.17-157.el7_3.5.x86_64

以前のバージョンのglibc-commonを削除する必要があることはより明白です。

    rpm --erase --nodeps --noscript glibc-common-2.17-157.el7_3.4.x86_64
    yum reinstall glibc-common
3
Sam Azer

次のコマンドを実行してみてください

yum clean all
rpm --rebuilddb
yum update
yum clean all
yum reinstall glibc glibc-common libgcc
yum upgrade
yum install yum-utils
package-cleanup --problems
package-cleanup --dupes
0
jatin7