Ubuntu 20.04 mariadb-server-10.3 升级时出现奇怪的问题

Ubuntu 20.04 mariadb-server-10.3 升级时出现奇怪的问题

我刚刚在 ubuntu 20.04 服务器上执行了 dist-upgrade,但卡在了 mariadb-server-10.3 上

apt 进程挂起于此包,等待 20 分钟后,我终止了该进程。之后,我检查了 mariadb,它正在运行 v. 10.3,但 apt 仍在要求配置:

dpkg --configure -a
Setting up mariadb-server-10.3 (1:10.3.29-0ubuntu0.20.04.1)

一直挂着。但如果我检查已安装的软件包,就会得到以下信息:

dpkg -l | grep maria*
ii  mariadb-client-10.3                  1:10.3.29-0ubuntu0.20.04.1                 amd64        MariaDB database client binaries
ii  mariadb-client-core-10.3             1:10.3.29-0ubuntu0.20.04.1                 amd64        MariaDB database core client binaries
ii  mariadb-common                       1:10.3.29-0ubuntu0.20.04.1                 all          MariaDB common metapackage
iU  mariadb-server                       1:10.3.29-0ubuntu0.20.04.1                 all          MariaDB database server (metapackage depending on the latest version)
iF  mariadb-server-10.3                  1:10.3.29-0ubuntu0.20.04.1                 amd64        MariaDB database server binaries
ii  mariadb-server-core-10.3             1:10.3.29-0ubuntu0.20.04.1                 amd64        MariaDB database core server files

这不会是个问题,只是从现在开始,每次我需要更新包/系统时,都会遇到这个挂起的问题:

    dpkg: dependency problems prevent configuration of mariadb-server:
 mariadb-server depends on mariadb-server-10.3 (>= 1:10.3.29-0ubuntu0.20.04.1); however:
  Package mariadb-server-10.3 is not configured yet.

dpkg: error processing package mariadb-server (--configure):
 dependency problems - leaving unconfigured
Errors were encountered while processing:
 mariadb-server-10.3
 mariadb-server

怎么修?

答案1

我不得不重新安装才能修复。显然,如果您可以先备份,那就备份吧!

sudo apt remove mariadb-server mariadb-server-10.3 mariadb-server-core-10.3 mariadb-client mariadb-client-10.3 mariadb-client-core-10.3 mariadb-common

注意:我不需要恢复任何数据库。运行上述命令时,我看到了以下消息:
dpkg: warning: while removing mariadb-server-core-10.3, directory '/usr/share/mysql' not empty so not removed

因此,如果您想进行备份,您应该没有任何借口,您可以从应该存储数据库的('/var/lib/mysql')中进行备份。

重新安装/恢复 MariaDB:
sudo apt install mariadb-server mariadb-client

答案2

我必须使用服务器上现有的 mysql-server。这是因为我不需要服务器上的 MySQL

sudo systemctl stop mysql
sudo apt purge mysql-server mysql-client mysql-common mysql-server-core-* mysql-client-core-*
sudo rm -rf /etc/mysql /var/lib/mysql /var/log/mysql
sudo apt autoremove
sudo apt autoclean

然后我重新安装了 MariaDB 服务器

安装

sudo apt update
sudo apt install mariadb-server

建立

sudo mysql_secure_installation

答案3

如果你之前安装过 mySQL,并且你的系统日志显示

AVC apparmor="DENIED" operation="sendmsg" info="Failed name lookup - disconnected path" error=-13 profile="/usr/sbin/mysqld"

清除、重新安装或类似操作都无济于事。

残留的 AppArmor 配置文件将阻止 mariaDB 成功启动。

因此实际上任何想要在 Debian 或 Ubuntu 上从 mySQL 切换到 mariaDB 的人都会失败(可能是某些 Oracle 维护人员参与了软件包创建?;-))

这是从 18.04 版开始已知的,包括一个修复,但直到现在还没有修复。

https://bugs.launchpad.net/ubuntu/+source/mariadb-10.1/+bug/1806263

echo "/usr/sbin/mysqld { }" > /etc/apparmor.d/usr.sbin.mysqld
apparmor_parser -v -R /etc/apparmor.d/usr.sbin.mysqld

将会修复此问题。之后,可以安装 mariaDB 和/或启动服务。

相关内容