Mysql 问:Fedora 30上的MariaDB安装问题

Mysql 问:Fedora 30上的MariaDB安装问题,mysql,mariadb,fedora,Mysql,Mariadb,Fedora,我需要安装MariaDB,并按照Fedora Wiki的官方说明进行操作,但无法正确安装。因此,首先我运行dnf install mariadb-mariadb-server命令(根目录下),返回 已安装包mysql-community-client-8.0.17-1.fc30.x86_64。 包mysql-community-server-8.0.17-1.fc30.x86_64已安装。 依赖项已解决。 无事可做。 完成 因此,我尝试使用systemctl start mariadb启用/启动

我需要安装MariaDB,并按照Fedora Wiki的官方说明进行操作,但无法正确安装。因此,首先我运行
dnf install mariadb-mariadb-server
命令(根目录下),返回

已安装包mysql-community-client-8.0.17-1.fc30.x86_64。 包mysql-community-server-8.0.17-1.fc30.x86_64已安装。 依赖项已解决。 无事可做。 完成

因此,我尝试使用
systemctl start mariadb
启用/启动mariadb,然后返回

无法启动mariadb.service:找不到单元mariadb.service


我安装了其他必要的软件包,如php、httpd、mysql等,我也需要安装LAMP,但我遇到了这个错误。你能告诉我怎么走吗?

之所以会这样,是因为mysql社区包被配置为过时的mariadb包

下面的方法可能不是最理想的,每个人都可以很容易地将其简化

首先,如果您安装了
mysql社区-*
软件包,那么您可能已经配置了
mysql社区
repo。在您的
/etc/yum.repo.d
中搜索并将其删除:

$ grep -ri community /etc/yum.repos.d/*
/etc/yum.repos.d/mysql.repo:[mysql80-community]
/etc/yum.repos.d/mysql.repo:name=MySQL 8.0 Community Server
/etc/yum.repos.d/mysql.repo:baseurl=http://repo.mysql.com/yum/mysql-8.0-community/fc/$releasever/$basearch/

sudo mv /etc/yum.repos.d/mysql.repo /tmp/
然后,检查您到底拥有哪些
mysql社区-*
软件包:

$ rpm -qa | grep mysql-community
mysql-community-server-8.0.17-1.fc30.x86_64
mysql-community-libs-8.0.17-1.fc30.x86_64
mysql-community-client-8.0.17-1.fc30.x86_64
mysql-community-common-8.0.17-1.fc30.x86_64
摆脱它们最简单的方法就是通过
dnf
删除它们。但这需要非常小心地执行,因为如果它们已经存在一段时间,您可能会有其他包依赖于它们。因此,当您运行
remove
命令时,请确保没有自动是(
-y
选项),并在同意卸载之前检查输出。它可能看起来有点像这样:

$ sudo dnf remove mysql-community*
Dependencies resolved.
===================================================================================================================================================================================
 Package                                           Architecture                      Version                                   Repository                                     Size
===================================================================================================================================================================================
Removing:
 mysql-community-client                            x86_64                            8.0.17-1.fc30                             @mysql80-community                             66 M
 mysql-community-common                            x86_64                            8.0.17-1.fc30                             @mysql80-community                            8.3 M
 mysql-community-libs                              x86_64                            8.0.17-1.fc30                             @mysql80-community                            7.5 M
 mysql-community-server                            x86_64                            8.0.17-1.fc30                             @mysql80-community                            128 M
Removing dependent packages:
 perl-DBD-MySQL                                    x86_64                            4.050-2.fc30                              @fedora                                       367 k
Removing unused dependencies:
请注意
删除依赖程序包部分
。我只添加了一个包作为示例,但在您的情况下,它可能会更长更可怕。如果您确实拥有该部分,但不知道是否可以安全地删除其所有内容,那么最好不要这样做(现在还不知道)。中止操作

Is this ok [y/N]: n
Operation aborted.
相反,您可以尝试用MariaDB替换
mysql社区包。有一个
dnf
选项
--allowerasing
,似乎可以解决这个问题,但是您需要使用版本来指定包名,以解决mysql过时的问题(将命令中的版本替换为您执行此操作时可用的实际版本):

现在,除了mysql社区之外,没有任何依赖项被删除,这是我们的目标

选项
--setopt=install\u-weak\u-deps=False
并非绝对必要,但如果没有它,则
dnf
将安装许多您可能不需要的软件包。您可以在不使用该选项的情况下运行以查看差异

更换服务器和客户端软件包后,您可以检查MySQL community server中还有哪些软件包,如果需要,可以尝试删除其余的软件包:

$ rpm -qa | grep mysql-community
mysql-community-libs-8.0.17-1.fc30.x86_64
mysql-community-common-8.0.17-1.fc30.x86_64

$ sudo dnf remove mysql-community-libs mysql-community-common
Dependencies resolved.
===================================================================================================================================================================================
 Package                                           Architecture                      Version                                   Repository                                     Size
===================================================================================================================================================================================
Removing:
 mysql-community-common                            x86_64                            8.0.17-1.fc30                             @mysql80-community                            8.3 M
 mysql-community-libs                              x86_64                            8.0.17-1.fc30                             @mysql80-community                            7.5 M

Transaction Summary
现在它看起来很安全,不再依赖



我能想到一个陷阱如果您不知道为什么要安装mysql社区,那么您可能有一些东西需要它,并且不满足于替换它。那么它可能不允许您更换软件包。但我猜不出它可能是什么,所以这取决于你去试试看。我想它会出现在您在确认之前检查的
dnf
输出中。

之所以会出现这种情况,是因为mysql社区包被配置为过时的mariadb包

下面的方法可能不是最理想的,每个人都可以很容易地将其简化

首先,如果您安装了
mysql社区-*
软件包,那么您可能已经配置了
mysql社区
repo。在您的
/etc/yum.repo.d
中搜索并将其删除:

$ grep -ri community /etc/yum.repos.d/*
/etc/yum.repos.d/mysql.repo:[mysql80-community]
/etc/yum.repos.d/mysql.repo:name=MySQL 8.0 Community Server
/etc/yum.repos.d/mysql.repo:baseurl=http://repo.mysql.com/yum/mysql-8.0-community/fc/$releasever/$basearch/

sudo mv /etc/yum.repos.d/mysql.repo /tmp/
然后,检查您到底拥有哪些
mysql社区-*
软件包:

$ rpm -qa | grep mysql-community
mysql-community-server-8.0.17-1.fc30.x86_64
mysql-community-libs-8.0.17-1.fc30.x86_64
mysql-community-client-8.0.17-1.fc30.x86_64
mysql-community-common-8.0.17-1.fc30.x86_64
摆脱它们最简单的方法就是通过
dnf
删除它们。但这需要非常小心地执行,因为如果它们已经存在一段时间,您可能会有其他包依赖于它们。因此,当您运行
remove
命令时,请确保没有自动是(
-y
选项),并在同意卸载之前检查输出。它可能看起来有点像这样:

$ sudo dnf remove mysql-community*
Dependencies resolved.
===================================================================================================================================================================================
 Package                                           Architecture                      Version                                   Repository                                     Size
===================================================================================================================================================================================
Removing:
 mysql-community-client                            x86_64                            8.0.17-1.fc30                             @mysql80-community                             66 M
 mysql-community-common                            x86_64                            8.0.17-1.fc30                             @mysql80-community                            8.3 M
 mysql-community-libs                              x86_64                            8.0.17-1.fc30                             @mysql80-community                            7.5 M
 mysql-community-server                            x86_64                            8.0.17-1.fc30                             @mysql80-community                            128 M
Removing dependent packages:
 perl-DBD-MySQL                                    x86_64                            4.050-2.fc30                              @fedora                                       367 k
Removing unused dependencies:
请注意
删除依赖程序包部分
。我只添加了一个包作为示例,但在您的情况下,它可能会更长更可怕。如果您确实拥有该部分,但不知道是否可以安全地删除其所有内容,那么最好不要这样做(现在还不知道)。中止操作

Is this ok [y/N]: n
Operation aborted.
相反,您可以尝试用MariaDB替换
mysql社区包。有一个
dnf
选项
--allowerasing
,似乎可以解决这个问题,但是您需要使用版本来指定包名,以解决mysql过时的问题(将命令中的版本替换为您执行此操作时可用的实际版本):

现在,除了mysql社区之外,没有任何依赖项被删除,这是我们的目标

选项
--setopt=install\u-weak\u-deps=False
并非绝对必要,但如果没有它,则
dnf
将安装许多您可能不需要的软件包。您可以在不使用该选项的情况下运行以查看差异

更换服务器和客户端软件包后,您可以检查MySQL community server中还有哪些软件包,如果需要,可以尝试删除其余的软件包:

$ rpm -qa | grep mysql-community
mysql-community-libs-8.0.17-1.fc30.x86_64
mysql-community-common-8.0.17-1.fc30.x86_64

$ sudo dnf remove mysql-community-libs mysql-community-common
Dependencies resolved.
===================================================================================================================================================================================
 Package                                           Architecture                      Version                                   Repository                                     Size
===================================================================================================================================================================================
Removing:
 mysql-community-common                            x86_64                            8.0.17-1.fc30                             @mysql80-community                            8.3 M
 mysql-community-libs                              x86_64                            8.0.17-1.fc30                             @mysql80-community                            7.5 M

Transaction Summary
现在它看起来很安全,不再依赖


我能想到一个陷阱如果您不知道为什么要安装mysql社区,那么您可能有一些东西需要它,并且不满足于替换它。那它可能就不可能了