web-dev-qa-db-ja.com

CentOs 7のmultilibバージョンの問題

YUMをSudo yum update --exclude=kernel*,python* --skip-brokenで更新しようとすると、Multilib version problemsが見つかります。保護されたmultilib-versions:

systemd-libs-219-30.el7_3.7.x86_64!=systemd-libs-219-30.el7_3.6.i686

どうすればこれを解決できますか? CentOS 7.3を使用していますが、アーキテクチャはx86_64です。

Fout:  Multilib version problems found. This often means that the root
      cause is something else and multilib version checking is just
      pointing out that there is a problem. Eg.:

        1. You have an upgrade for systemd-libs which is missing some
           dependency that another package requires. Yum is trying to
           solve this by installing an older version of systemd-libs of the
           different architecture. If you exclude the bad architecture
           yum will tell you what the root cause is (which package
           requires what). You can try redoing the upgrade with
           --exclude systemd-libs.otherarch ... this should give you an error
           message showing the root cause of the problem.

        2. You have multiple architectures of systemd-libs installed, but
           yum can only see an upgrade for one of those architectures.
           If you don't want/need both architectures anymore then you
           can remove the one with the missing update and everything
           will work.

        3. You have duplicate versions of systemd-libs installed already.
           You can use "yum check" to get yum show these errors.

      ...you can also use --setopt=protected_multilib=false to remove
      this checking, however this is almost never the correct thing to
      do as something else is very likely to go wrong (often causing
      much more problems).

      Beschermde multilib-versies: systemd-libs-219-30.el7_3.7.x86_64!=systemd-libs-219-30.el7_3.6.i686
3
Jeroen Steen

Yumは、システム内のsystemd-libsのRPMの64ビットバージョンと32ビットバージョンが一致していないと不平を言っています。

バージョン219-30.el7_3 .7がx86_64(64ビット)であり、バージョン219-30.el7_3 .6がi686(32-ビット)。

次のコマンドを使用して、システムの各アーキテクチャのパッケージのバージョンを確認できます。

$ rpm -q systemd-libs
systemd-libs-219-30.el7_3.6.i686
systemd-libs-219-30.el7_3.7.x86_64

I686用のsystemd-libsの2つのバージョンがあるなど、そこに何らかの異常があるかどうかを確認してください...

バージョンが一致する場合、yumがx86_64バージョンをアップグレードしようとしているが、i686バージョンは残していることが問題である可能性があります。

あなたの--skip-brokenが何らかの形でこれを引き起こしている可能性があります。パッケージのi686バージョンがどういうわけか「壊れて」いる場合...

64ビットパッケージのみを考慮し、32ビットパッケージをインストール(または維持)しないようにシステムが再構成された可能性もあります...

これをトラブルシューティングするために、yum-utilsパッケージからいくつかのユーティリティを試すことができます。

インストールできますか?

$ Sudo yum install yum-utils

その場合は、次のコマンドを試して、中断されたyumトランザクションを完了してください(最初に問題が発生した可能性があります)。

$ Sudo yum-complete-transaction

package-cleanupコマンドを使用することもできます。たとえば、パッケージが重複している(32ビットパッケージに複数のバージョンがインストールされている)と思われる場合は、次のことを試してください。

$ Sudo package-cleanup --cleandupes

これが役に立てば幸いです!

7
filbranden

このような問題は通常、システムに1つのパッケージの2つの異なるバージョンがインストールされている場合に発生します。

0

yum list installed | grep systemd-libs
yum update systemd-libs.i686
yum reinstall systemd-libs.x86_64

次にシステムを再起動します

0
Adam Pielak

私はまったく同じ問題を抱えていました。 Centos 7、EpelとRemiリポジトリの両方がインストールされた最新リリースがインストールされています。そして、私はいつものようにアップグレードしました:/etc/yum.repos.dに行き、epel.repoファイルで[epel]の下に見つけます:

enabled = 1

この線

enabled = 1

1に設定する必要があります

他のファイル:

remi.repo

まったく同じ行を0に設定する必要があります。

このようにして、PHPバージョンでの競合を回避するために、epelリポジトリではなく、epelリポジトリの更新を選択します。

したがって、epelリポジトリが有効で、remiリポジトリが無効になっていると、エラーが発生しました。私はコマンドを実行しました:

yum --skip-broken update

PHPアップデートのエラーは、remiからインストールされた新しいバージョンなので、-skip-brokenを使用する必要があることに注意してください。

私は2つのsystemd-libsをインストールしていませんが、x86_64を1つだけインストールしています。これはレポ依存関係の問題だと思いました。

したがって、最初にEpelリポジトリで更新を使用する代わりに、今回は最初にレミリポジトリで更新を作成しました。すべてがうまくいきました...エラーはありませんでした。アップデートは通常どおりCentosアップデートリポジトリからのカーネルとその他のアップデートを処理し、レミはPHP=ものを処理しました。その後、レミリポジトリを無効にしました。 :

  • remi.repoファイルでenabled = 0にする。

そして、epelリポジトリを有効にしました:

  • epel.repoファイルでenabled = 1にします。

次に、すべてのphpが競合を表示しないため、yumを更新しました。--skip-brokenパラメータは不要です...

そしてそれはうまくいった!

最後に、私は通常、レミを無効にし、次回のためにもう一度epelを有効にします。お役に立てれば。

0
Strider

私は同様の問題を抱えていて、いくつかのパッケージの重複したバージョンを削除することでそれを解決しました:

package-cleanup --dupes

次に、rdmdbからすべての新しいバージョンを削除します

rpm -e --justdb --nodeps <package-version>

次にyum upgradeが再び機能し、保留中のすべてのアップグレードをインストールします。

0
socona