前言,我做了一些研究,像往常一样,我们有大量类似的问题,但并没有完全涵盖所描述的标题:
- https://askubuntu.com/questions/1407756/akonadi-on-kde-cant-start-due-to-unknown-error-and-i-cant-update-mariadb类似场景,完全不同的合成体
- https://askubuntu.com/questions/1289099/mariadb-doesnt-start-on-kubuntu-20-10确切情景,确切合成,不同原因,由...引起
Could not increase number of max_open_files
- https://askubuntu.com/questions/1228017/how-to-install-mysql-on-19-10不同的场景,不同的合成器,不同的原因,可能是用户混合使用了 MariaDB 的版本
- 无法在 Debian 7 上安装 MariaDB不同的场景,不同的合成器,不同的原因,用户正在遵循无意义的教程
- https://bbs.archlinux.org/viewtopic.php?id=277078类似场景,不同的 synthome,类似原因,用户的 MariaDB 已损坏,但安装没有问题
- https://www.reddit.com/r/debian/comments/17p3ted/mariadbserver_package_broken/确切的场景,确切的合成,确切的原因,但没有答案,有些人认为用户的安装有问题
我的情况:
- 全新 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
本身不应中断安装。但实际上,您可能没有时间自行排除故障或热修补此类关键软件包。
反正,
一个简单而干净的解决方案是:
- 停止阿科纳迪
- 将 Akonadi 从 MariaDB 迁移到 SQLite
- 重新启动 Akonadi
- 重试
有趣的是,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 的笔记本电脑上,它就是这样工作的。