MariaDBとMySQLは、非常に似た機能を持つ人気のあるオープンソースデータベースシステムです。時には、同じシステム上でこれらを同時に使用しようとすると、パッケージの競合が発生することがあります。この記事では、MariaDBとMySQLのパッケージ間の競合、およびMariaDBパッケージの異なるバージョン間の競合に直面した場合の解決策をいくつか提案します。
エラー内容
以下のエラーが発生した場合:
Problem 1: package mariadb-devel-3:10.3.35-1.module+el8.6.0+1005+cdf19c22.x86_64 conflicts with mysql-devel provided by MariaDB-devel-10.6.12-1.el8.x86_64
- cannot install the best update candidate for package mariadb-devel-3:10.3.35-1.module+el8.6.0+1005+cdf19c22.x86_64
- cannot install the best update candidate for package mariadb-connector-c-devel-3.1.11-2.el8_3.x86_64
Problem 2: package mariadb-gssapi-server-3:10.3.35-1.module+el8.6.0+1005+cdf19c22.x86_64 requires mariadb-server(x86-64) = 3:10.3.35-1.module+el8.6.0+1005+cdf19c22, but none of the providers can be installed
- package mariadb-server-3:10.3.35-1.module+el8.6.0+1005+cdf19c22.x86_64 conflicts with mysql-server provided by MariaDB-server-10.6.12-1.el8.x86_64
- package MariaDB-server-10.6.12-1.el8.x86_64 obsoletes mariadb-server provided by mariadb-server-3:10.3.35-1.module+el8.6.0+1005+cdf19c22.x86_64
- cannot install the best update candidate for package mariadb-server-3:10.3.35-1.module+el8.6.0+1005+cdf19c22.x86_64
- cannot install the best update candidate for package mariadb-gssapi-server-3:10.3.35-1.module+el8.6.0+1005+cdf19c22.x86_64
Problem 3: problem with installed package mariadb-gssapi-server-3:10.3.35-1.module+el8.6.0+1005+cdf19c22.x86_64
- package mariadb-gssapi-server-3:10.3.35-1.module+el8.6.0+1005+cdf19c22.x86_64 requires mariadb-server(x86-64) = 3:10.3.35-1.module+el8.6.0+1005+cdf19c22, but none of the providers can be installed
- package mariadb-server-3:10.3.35-1.module+el8.6.0+1005+cdf19c22.x86_64 conflicts with mysql-server provided by MariaDB-server-10.6.12-1.el8.x86_64
- package MariaDB-server-10.6.12-1.el8.x86_64 obsoletes mariadb-server provided by mariadb-server-3:10.3.35-1.module+el8.6.0+1005+cdf19c22.x86_64
- cannot install the best update candidate for package mariadb-server-utils-3:10.3.35-1.module+el8.6.0+1005+cdf19c22.x86_64
Problem 4: problem with installed package mariadb-devel-3:10.3.35-1.module+el8.6.0+1005+cdf19c22.x86_64
- package mariadb-devel-3:10.3.35-1.module+el8.6.0+1005+cdf19c22.x86_64 conflicts with mysql-devel provided by MariaDB-devel-10.6.10-1.el8.x86_64
- problem with installed package mariadb-connector-c-devel-3.1.11-2.el8_3.x86_64
- package mariadb-devel-3:10.3.35-1.module+el8.6.0+1005+cdf19c22.x86_64 conflicts with mysql-devel provided by MariaDB-devel-10.6.11-1.el8.x86_64
- package mariadb-devel-3:10.3.35-1.module+el8.6.0+1005+cdf19c22.x86_64 conflicts with mysql-devel provided by MariaDB-devel-10.6.12-1.el8.x86_64
- package mariadb-connector-c-devel-3.1.11-2.el8_3.x86_64 requires mariadb-connector-c = 3.1.11-2.el8_3, but none of the providers can be installed
- package MariaDB-shared-10.6.12-1.el8.x86_64 obsoletes mariadb-connector-c provided by mariadb-connector-c-3.1.11-2.el8_3.x86_64
- package MariaDB-shared-10.6.12-1.el8.x86_64 obsoletes mariadb-connector-c provided by mariadb-connector-c-3.1.11-2.el8_3.i686
- cannot install the best update candidate for package mariadb-connector-c-3.1.11-2.el8_3.x86_64
(try to add '--allowerasing' to command line to replace conflicting packages or '--skip-broken' to skip uninstallable packages or '--nobest' to use not only best candidate packages)
これは、MariaDBとMySQLのパッケージ間の競合、およびMariaDBパッケージの異なるバージョン間の競合が原因です。
解決策
これらの競合を解決するために、以下のオプションがあります:
1. 競合するパッケージを削除して新しいものに置き換える
コマンドラインに--allowerasing
フラグを追加して、競合するパッケージを削除し、新しいものに置き換えます。
sudo dnf update --allowerasing
2. 解決できない依存関係のあるパッケージをスキップする
--skip-broken
フラグを使用して、解決できない依存関係のあるパッケージをスキップし、残りのパッケージをアップデートします。
sudo dnf update --skip-broken
3. 最良の候補パッケージだけでなく、他のバージョンも検討する
--nobest
フラグを使用して、最良の候補パッケージだけでなく、他のバージョンも検討します。
sudo dnf update --nobest
4. MySQLとMariaDBを別々の場所にインストールする
MySQLとMariaDBの両方をシステムに保持したい場合は、各データベースシステムのドキュメントに従って別々の場所にインストールできます。
5. MariaDBのみを使用する
MariaDBのみを使用することにした場合は、MySQL関連のパッケージを削除してからアップデートします。
sudo dnf remove mysql\* --allowerasing
sudo dnf update
6. MySQLのみを使用する
MySQLのみを使用することにした場合は、MariaDB関連のパッケージを削除してからアップデートします。
sudo dnf remove mariadb\* --allowerasing
sudo dnf update
注意事項
システムに変更を加える前に、必ずデータをバックアップしてください。これにより、データ損失のリスクを最小限に抑えることができます。
まとめ
この記事では、MariaDBとMySQLのパッケージ間の競合、およびMariaDBパッケージの異なるバージョン間の競合を解決する方法をいくつか紹介しました。最適な解決策を選択することで、これらの競合を効果的に解決し、システムの安定性を維持することができます。