无法在 Debian 上安装 mariadb-server“有一个 MariaDB/MySQL 服务器正在运行”(因为 Akonadi?)

无法在 Debian 上安装 mariadb-server“有一个 MariaDB/MySQL 服务器正在运行”(因为 Akonadi?)

前言,我做了一些研究,像往常一样,我们有大量类似的问题,但并没有完全涵盖所描述的标题:


我的情况:

  • 全新 Tuxedo 笔记本电脑,搭载 Debian GNU/Linux bookworm(当前稳定版,2023 年)使用 KDE
    • (该问题也可能发生在其他带有 KDE 的 Debian/Ubuntu 发行版中)
  • 跑步sudo apt install mariadb-server

会发生什么:

MariaDB 服务器无法安装且无法正确启动,因为其他程序正在运行:

Preparing to unpack .../04-mariadb-server_1%3a10.11.4-1~deb12u1_amd64.deb...
Failed to stop mariadb.service: Unit mariadb.service not loaded.
invoke-rc.d: initscript mariadb, action "stop" failed.
Failed to stop mysql.service: Unit mysql.service not loaded.
invoke-rc.d: initscript mysql, action "stop" failed.
Attempt to stop MariaDB/MySQL server returned exitcode 5
There is a MariaDB/MySQL server running, but we failed in our attempts to stop it.
Stop it yourself and try again!

apt cache show mariadb-server我的包裹是1:10.11.4-1~deb12u1

我检查了一下我的情况,确实如此不是MariaDB 已安装,并且确实没有以 root 身份运行。但是,我有一个称为“akonadi”的东西正在以我的专用低权限桌面用户名运行,并且由于某些原因,它似乎正在运行其专用的 MariaDB。

事实上,我在进程列表中看到了这一行未知的内容,它可能是桌面依赖项的一部分:

/usr/sbin/mysqld
--defaults-file=/home/username/.local/share/akonadi/mysql.conf
--datadir=/home/username/.local/share/akonadi/db_data/
--socket=/run/user/1000/akonadi/mysql.socket
--pid-file=/run/user/1000/akonadi/mysql.pid

我认为我的 KDE 默认带有这个名为 的软件包,akonadi-backend-mysql它默认运行 MariaDB,这会破坏 的安装mariadb-server

这有意义吗?为什么?如何修复并安装mariadb-server

答案1

是的,似乎在 Debian bookworm KDE(也许还有其他发行版,如 Ubuntu KDE 等)中,有一个名为的可执行文件,akonadi它默认与akonadi-backend-mysql需要其自己的 MariaDB 的包一起运行 - 理论上 - 与之完全分离,mariadb-server但实际上并非如此。

Debian 官方已跟踪此错误,但目前尚不清楚在撰写本文时(2023-12-18),它是否会得到修复bookworm

https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1032047

https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1050416

已经修复 https://salsa.debian.org/mariadb-team/mariadb-server/-/commit/38198d0b9e1c7821ddd074e308b25034bdcdce5b但后来 Debian 发布经理认为将其纳入 Debian 13“Bookworm”风险太大,因此它被撤销,并等待重新应用 https://salsa.debian.org/mariadb-team/mariadb-server/-/merge_requests/48

如果您的系统仅运行带有专用 MariaDB 的标准 Akonadi,则软件包mariadb-server本身不应中断安装。但实际上,您可能没有时间自行排除故障或热修补此类关键软件包。

反正,

一个简单而干净的解决方案是:

  1. 停止阿科纳迪
  2. 将 Akonadi 从 MariaDB 迁移到 SQLite
  3. 重新启动 Akonadi
  4. 重试

有趣的是,KDE 的官方文档(“如何从 MySQL/PostgreSQL 切换到 SQLite?”部分)详细介绍了 Akonadi 从 MariaDB 迁移到 SQLite 的过程。如果您想了解有关 Akonadi 本身的更多信息,包括它的功能、它存储什么类型的数据以及原因等,请阅读此文档。

https://userbase.kde.org/Akonadi

简而言之,作为解决方案,从您的桌面用户开始:

akonadictl stop
rm -Rf $XDG_CONFIG_HOME/akonadi
rm -Rf $XDG_DATA_HOME/akonadi
rm -Rf $XDG_CONFIG_HOME/akonadi*
rm -Rf $XDG_DATA_HOME/akonadi*

然后编辑文件$HOME/.config/akonadi/akonadiserverrc。来自:

[%General]
Driver=QMYSQL

到:

[%General]
Driver=QSQLITE

然后重新启动 Akonadiakonadictl start并重试安装 MariaDB。

在我使用的装有 Debian GNU/Linux bookworm KDE 的笔记本电脑上,它就是这样工作的。

相关内容