在RockyLinux 8上解决MariaDB和MySQL之间的竞争的方式
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
跳过无法解决的依赖关系的软件包。
使用“–skip-broken”标志,跳过无法解决的有依赖关系的软件包,并更新剩余的软件包。
sudo dnf update --skip-broken
3. 不仅考虑最佳候选套餐,还要考虑其他版本。
使用–nobest标志,不仅考虑最佳候选包,还考虑其他版本。
sudo dnf update --nobest
在不同的地方安装MySQL和MariaDB。
如果希望在系统中同时使用MySQL和MariaDB,可以根据每个数据库系统的文档将它们安装在不同的位置。
只使用MariaDB
如果决定只使用MariaDB,则需要先删除与MySQL相关的软件包,然后进行更新。
sudo dnf remove mysql\* --allowerasing
sudo dnf update
只使用MySQL。
如果决定只使用MySQL,则需要先删除与MariaDB相关的软件包然后进行更新。
sudo dnf remove mariadb\* --allowerasing
sudo dnf update
请关注以下要点
在对系统进行更改之前,请务必备份数据。这样可以将数据丢失的风险降到最低。
总结
在这篇文章中,我们介绍了解决MariaDB和MySQL软件包之间的冲突以及解决不同版本的MariaDB软件包之间冲突的几种方法。通过选择最佳解决方案,我们能够有效地解决这些冲突,并保持系统的稳定性。