为什么 Ubuntu 禁止通过 Apt 安装 MySQL 和 MariaDB?

Dar*_*rks 1 mysql package-management apt mariadb

我见过树桩用户(包括我自己),Apt 不允许同时安装 MySQL 和 MariaDB。例如,这是一个关于该主题的近 3 年前的AskUbuntu 问题,但仍未得到解答。

作为问题的具体描述,请考虑 Ubuntu 22.04。如果我使用 Apt 安装了 MySQL,然后尝试安装 MariaDB 软件包,Apt 将要求删除 MySQL:

# MySQL 8.0 is installed:
$ apt-cache policy mysql-server-8.0 
mysql-server-8.0:
  Installed: 8.0.30-0ubuntu0.22.04.1
  Candidate: 8.0.30-0ubuntu0.22.04.1
  ...

# MariaDB 10.6 is not installed:
$ apt-cache policy mariadb-server-10.6 
mariadb-server-10.6:
  Installed: (none)
  Candidate: 1:10.6.7-2ubuntu1.1
  ...

# Attempt to install MariaDB 10.6:
$ sudo apt install mariadb-server-10.6 
...
The following additional packages will be installed:
  galera-4 gawk libconfig-inifiles-perl libdbd-mysql-perl libdbi-perl
  libsigsegv2 libterm-readkey-perl mariadb-client-10.6
  mariadb-client-core-10.6 mariadb-server-core-10.6
...
# MySQL packages are removed:
The following packages will be REMOVED:
  mysql-client-8.0 mysql-client-core-8.0 mysql-server mysql-server-8.0
  mysql-server-core-8.0
...
Run Code Online (Sandbox Code Playgroud)

我从未听过有人为此给出充分的理由。MySQL 和 MariaDB 非常相似,但这并不自动排除它们共存。事实上,MySQL 本身的多个版本可以在同一台机器上共存,正如MySQL所解释的那样。正如MariaDB所解释的,这些多个版本之一没有理由不能成为 MariaDB 的实例。

那么,如果没有根本原因我不能同时安装 MySQL 和 MariaDB,为什么 Apt 坚持将它们视为互斥的呢?

Rin*_*ind 5

您可以拥有多个 MySQL,但使用 apt 只能安装一个。通过 apt MariaDB 安装与 MySQL 安装相同:MariaDB 是直接替代品,两者使用相同的库名称和文件(在/var/lib/mysql和中/etc/mysql/my.conf)。也许将来这种情况可能会改变。

但是,就像您可以在 /opt 中安装更多版本的 MySQL 一样,甚至可以使用另一个端口同时运行这些版本,您也可以将多个 MariaDB 添加到 /opt 中的所有 MySQL 安装中并使用其自己的端口。或者使用同一端口安装多个端口,一次只有 1 个活动端口。

  • @DarienMarks 从文件名/路径的意义上来说它们是“相同的”库,但是从文件**内容**的意义上来说它们是不同的。所以它们实际上是**冲突的**库。MySQL 和 MariaDB 不能像您建议的那样使用一组通用的库,因为这两个包都包含两个不同版本的“相同”(就名称而言)库。它们就是这么设计的。那么如何决定使用哪个版本呢?如果您使用 MySQL 版本,它可能无法与 MariaDB 配合使用,反之亦然。 (3认同)