web-dev-qa-db-ja.com

yum distro-syncを使用したFedoraディストリビューションのアップグレードは、エラー:保護されたmultilibバージョンで失敗します

これらの命令 を使用して、Slicehostスライスでyumアップグレードを実行しています(注:これはRackspace仮想ホストではありません。 Fedora 15から16への最新のFedoraディストリビューションの標準インストール)これは、14から15への明らかに成功したyumアップグレードに続くものです。

セットアップはMySQL5.6のバイナリインストールを除いて標準であり、次のコマンドを使用しています。


yum -y --releasever=16 --disableplugin=presto distro-sync --exclude=mysql-libs --exclude=Perl-DBD-MySQL --skip-broken

アップグレードされるパッケージに関する多くのメッセージの後、プロセスは次のエラーメッセージで停止します。


Error: Protected multilib versions: dracut-013-18.fc16.noarch != dracut-009-12.fc15.noarch
Error: Protected multilib versions: initscripts-9.33-1.fc16.x86_64 != initscripts-9.30.1-1.fc15.x86_64

提案が続きます:


 You could try running: rpm -Va --nofiles --nodigest

提案を使用しても役に立ちませんが、誰かがエラーを回避する方法を提案できますか?

1
blankabout

Fedoraは、実際にはこの方法でアップグレードすることを意図したものではありません。そして、あなたはまだ難しいものにさえ到達していません(16-17)。そうは言っても、私はこれを何十回も実行し、うまくいかない可能性のある考えられるほぼすべてのことに遭遇しました。これが私の推奨事項です。

可能であれば、これを行うための最善かつ最速の方法は、Fedora(17)の最新バージョンで新しいクラウドインスタンスを作成し、データと構成をそれに転送することです。次に、古いクラウドインスタンスを破棄します。もちろん、これはFedora 17のインストールイメージを持つRackspaceに依存しており、そうするかどうかはわかりません。

この目的のためだけに2つのカスタムシェルスクリプトがあります。1つは必要なすべての構成ファイルと古いシステムから提供されているデータをコピーし、もう1つは最初のスクリプトで作成されたすべてのデータを解凍してからインストールします。必要なパッケージ。

この狂気の道を歩み続けることにしているなら、読み続けてください。

エラーProtected multilib versionsは通常、システムに2つの異なるバージョンのパッケージがある場合に発生し、そのうちの1つが1つのアーキテクチャで、もう1つが別のアーキテクチャである場合があります(たとえば、古いパッケージはi686で、新しいパッケージはx86_64です)。また、yumの前回の実行が中断され、中断されたトランザクションを再開せずに別のyumトランザクションを実行しようとした場合にも発生する可能性があります。これは、Fedora14から15へのアップグレードが思ったほど完全ではなかったことを私に示唆しています。

まず、この問題が解決するまで、16以上への更新を停止します。

yum-complete-transactionを実行して、保留中のyum更新を終了します。これは簡単な修正です。これで問題が解決する場合は、残りの部分をスキップしてください。そうでない場合は、続行します...

ここで、このエラーをスローする各パッケージについて、インストールしたものを確認してください。

rpm -q dracut initscripts

これらのそれぞれについて、2つ以上のパッケージがリストされているはずです。それらの1つを削除します。一方が32ビットでもう一方が64ビットの場合、64ビットパッケージよりも新しい場合でも、32ビットパッケージを削除します。それ以外の場合は、古いパッケージを削除してください。最終的には、各パッケージを1つだけインストールする必要があります。

rpm -e dracut-00####.fc## initscripts-#.##-#.fc##

パッケージのバージョンが1つしかない場合は、実際にファイルシステムから削除せずに、RPMデータベースから削除する必要があります(起動とインストールに必要なため)。たとえば、ドラカットのバージョンが1つしかない場合:

rpm -e --nodeps --noscripts --justdb dracut-00####.fc##

この後、yum --releasever=16 distro-syncを続行できるようになります。

Distro-syncが終了した後、RPMデータベースからパッケージの唯一のバージョンを削除する必要がある場合は、それを置き換えるまでFedoraの手順を続行しないでください。

yum --releasever=16 reinstall dracut

この時点で、Fedoraの指示を続行できるはずです。

将来的に注意してください:Fedoraは常に2つのリリースバージョンのみをアクティブに保ちます。その後、古いディストリビューションがミラーから削除され、この方法で更新できなくなる可能性があります。したがって、最大で1つのバージョンだけ遅れる必要があります。または、CentOSなどのより安定したディストリビューションを使用して、この混乱を完全に回避することを検討してください。

3
Michael Hampton

アップデートテストリポジトリからパッケージがインストールされている可能性があり、現在は無効になっているようです。

どちらかを試してくださいyum ... --enablerepo=updates-testing

または、更新テストパッケージを最初にベースバージョンにダウングレードします。

yum distro-sync

0
Aaron Copley