Akonadi 拒绝在我全新安装的 KDE 4.6.0 上启动kubuntu-backportsUbuntu 10.10 Maverick Meerkat 上的 PPA 阻止我使用 KMail。以下是完整的错误输出:
patches@pleistocene:~/.local/share$ akonadictl start 正在启动 Akonadi 服务器... 完毕。 patches@pleistocene:~/.local/share$ 连接到已弃用的信号 QDBusConnectionInterface::serviceOwnerChanged(QString,QString,QString) 搜索路径:(“/ home / patches / bin”,“/ usr / local / sbin”,“/ usr / local / bin”,“/ usr / sbin”,“/ usr / bin”,“/ sbin”,“/ bin”,“/ usr / games”,“/ usr / sbin”,“/ usr / local / sbin”,“/ usr / local / libexec”,“/ usr / libexec”,“/ opt / mysql / libexec”,“/ opt / local / lib / mysql5 / bin”,“/ opt / mysql / sbin”) 找到 mysql_install_db:“/usr/bin/mysql_install_db” 找到 mysqlcheck:“/usr/bin/mysqlcheck” 初始连接期间数据库进程意外退出! 可执行文件:“/usr/sbin/mysqld-akonadi” 参数:(“ --defaults-file = /home/patches/.local/share/akonadi//mysql.conf”,“ --datadir = /home/patches/.local/share/akonadi/db_data/”,“ --socket = /home/patches/.local/share/akonadi/socket-pleistocene/mysql.socket”) 标准输出:“” stderr:“无法打开所需的默认文件:/home/patches/.local/share/akonadi//mysql.conf 默认处理中出现致命错误。程序已中止 110209 16:41:12 [警告] 无法创建测试文件 /home/patches/.local/share/akonadi/db_data/pleistocene.lower-test 110209 16:41:12 [警告] 无法创建测试文件 /home/patches/.local/share/akonadi/db_data/pleistocene.lower-test 110209 16:41:12 [注意] 插件‘FEDERATED’已被禁用。 /usr/sbin/mysqld-akonadi:找不到文件:“./mysql/plugin.frm”(errno:13) 110209 16:41:12 [错误] 无法打开 mysql.plugin 表。请运行 mysql_upgrade 来创建它。 110209 16:41:12 InnoDB: 文件操作中出现操作系统错误编号 13。 InnoDB:错误意味着mysqld没有访问权限 InnoDB:目录。 InnoDB:文件名 ./ibdata1 InnoDB:文件操作调用:‘创建’。 InnoDB:无法继续操作。 “ 退出代码:1 进程错误:“未知错误” “[ 0:akonadiserver(_Z11akBacktracev + 0x35)[0x8086055] 1:akonadiserver()[0x8086516] 2:[0xb772e400] 3:[0xb772e416] 4:/lib/libc.so.6(gsignal+0x51)[0xb6e9f941] 5:/lib/libc.so.6(中止+0x182)[0xb6ea2e42] 6:/usr/lib/libQtCore.so.4(_Z17qt_message_output9QtMsgTypePKc+0x8c)[0xb74d62dc] 7:akonadiserver(_ZN15FileDebugStream9writeDataEPKcx + 0xc4)[0x8087574] 8:/usr/lib/libQtCore.so.4(_ZN9QIODevice5writeEPKcx+0x8e)[0xb757168e] 9:/usr/lib/libQtCore.so.4(+0x103425) [0xb7581425] 10:/usr/lib/libQtCore.so.4(_ZN11QTextStreamD1Ev+0x3d)[0xb758295d] 11:akonadiserver(_ZN6QDebugD1Ev + 0x43)[0x8081b73] 12:akonadi服务器(_ZN13DbConfigMysql19startInternalServerEv+0x1c27)[0x810c177] 13:akonadiserver(_ZN7Akonadi13AkonadiServer20startDatabaseProcessEv + 0xe3)[0x8087a23] 14:akonadi服务器(_ZN7Akonadi13AkonadiServerC1EP7QObject+0xca)[0x8088b6a] 15:akonadi服务器(_ZN7Akonadi13AkonadiServer8instanceEv+0x48)[0x808a1d8] 16:akonadi服务器(主+0x364)[0x8080fb4] 17:/lib/libc.so.6(__libc_start_main + 0xe7)[0xb6e8bce7] 18:akonadiserver()[0x8080b81] ] “ ProcessControl:应用程序“akonadiserver”返回退出代码 255(未知错误) 搜索路径:(“/ home / patches / bin”,“/ usr / local / sbin”,“/ usr / local / bin”,“/ usr / sbin”,“/ usr / bin”,“/ sbin”,“/ bin”,“/ usr / games”,“/ usr / sbin”,“/ usr / local / sbin”,“/ usr / local / libexec”,“/ usr / libexec”,“/ opt / mysql / libexec”,“/ opt / local / lib / mysql5 / bin”,“/ opt / mysql / sbin”) 找到 mysql_install_db:“/usr/bin/mysql_install_db” 找到 mysqlcheck:“/usr/bin/mysqlcheck” 初始连接期间数据库进程意外退出! 可执行文件:“/usr/sbin/mysqld-akonadi” 参数:(“ --defaults-file = /home/patches/.local/share/akonadi//mysql.conf”,“ --datadir = /home/patches/.local/share/akonadi/db_data/”,“ --socket = /home/patches/.local/share/akonadi/socket-pleistocene/mysql.socket”) 标准输出:“” stderr:“无法打开所需的默认文件:/home/patches/.local/share/akonadi//mysql.conf 默认处理中出现致命错误。程序已中止 110209 16:41:12 [警告] 无法创建测试文件 /home/patches/.local/share/akonadi/db_data/pleistocene.lower-test 110209 16:41:12 [警告] 无法创建测试文件 /home/patches/.local/share/akonadi/db_data/pleistocene.lower-test 110209 16:41:12 [注意] 插件‘FEDERATED’已被禁用。 /usr/sbin/mysqld-akonadi:找不到文件:“./mysql/plugin.frm”(errno:13) 110209 16:41:12 [错误] 无法打开 mysql.plugin 表。请运行 mysql_upgrade 来创建它。 110209 16:41:12 InnoDB: 文件操作中出现操作系统错误编号 13。 InnoDB:错误意味着mysqld没有访问权限 InnoDB:目录。 InnoDB:文件名 ./ibdata1 InnoDB:文件操作调用:‘创建’。 InnoDB:无法继续操作。 “ 退出代码:1 进程错误:“未知错误” “[ 0:akonadiserver(_Z11akBacktracev + 0x35)[0x8086055] 1:akonadiserver()[0x8086516] 2:[0xb77ae400] 3:[0xb77ae416] 4:/lib/libc.so.6(gsignal+0x51)[0xb6f1f941] 5:/lib/libc.so.6(中止+0x182)[0xb6f22e42] 6:/usr/lib/libQtCore.so.4(_Z17qt_message_output9QtMsgTypePKc+0x8c)[0xb75562dc] 7:akonadiserver(_ZN15FileDebugStream9writeDataEPKcx + 0xc4)[0x8087574] 8:/usr/lib/libQtCore.so.4(_ZN9QIODevice5writeEPKcx+0x8e)[0xb75f168e] 9:/usr/lib/libQtCore.so.4(+0x103425) [0xb7601425] 10:/usr/lib/libQtCore.so.4(_ZN11QTextStreamD1Ev+0x3d)[0xb760295d] 11:akonadiserver(_ZN6QDebugD1Ev + 0x43)[0x8081b73] 12:akonadi服务器(_ZN13DbConfigMysql19startInternalServerEv+0x1c27)[0x810c177] 13:akonadiserver(_ZN7Akonadi13AkonadiServer20startDatabaseProcessEv + 0xe3)[0x8087a23] 14:akonadi服务器(_ZN7Akonadi13AkonadiServerC1EP7QObject+0xca)[0x8088b6a] 15:akonadi服务器(_ZN7Akonadi13AkonadiServer8instanceEv+0x48)[0x808a1d8] 16:akonadi服务器(主+0x364)[0x8080fb4] 17:/lib/libc.so.6(__libc_start_main + 0xe7)[0xb6f0bce7] 18:akonadiserver()[0x8080b81] ] “ ProcessControl:应用程序“akonadiserver”返回退出代码 255(未知错误) 搜索路径:(“/ home / patches / bin”,“/ usr / local / sbin”,“/ usr / local / bin”,“/ usr / sbin”,“/ usr / bin”,“/ sbin”,“/ bin”,“/ usr / games”,“/ usr / sbin”,“/ usr / local / sbin”,“/ usr / local / libexec”,“/ usr / libexec”,“/ opt / mysql / libexec”,“/ opt / local / lib / mysql5 / bin”,“/ opt / mysql / sbin”) 找到 mysql_install_db:“/usr/bin/mysql_install_db” 找到 mysqlcheck:“/usr/bin/mysqlcheck” 初始连接期间数据库进程意外退出! 可执行文件:“/usr/sbin/mysqld-akonadi” 参数:(“ --defaults-file = /home/patches/.local/share/akonadi//mysql.conf”,“ --datadir = /home/patches/.local/share/akonadi/db_data/”,“ --socket = /home/patches/.local/share/akonadi/socket-pleistocene/mysql.socket”) 标准输出:“” stderr:“无法打开所需的默认文件:/home/patches/.local/share/akonadi//mysql.conf 默认处理中出现致命错误。程序已中止 110209 16:41:12 [警告] 无法创建测试文件 /home/patches/.local/share/akonadi/db_data/pleistocene.lower-test 110209 16:41:12 [警告] 无法创建测试文件 /home/patches/.local/share/akonadi/db_data/pleistocene.lower-test 110209 16:41:12 [注意] 插件‘FEDERATED’已被禁用。 /usr/sbin/mysqld-akonadi:找不到文件:“./mysql/plugin.frm”(errno:13) 110209 16:41:12 [错误] 无法打开 mysql.plugin 表。请运行 mysql_upgrade 来创建它。 110209 16:41:12 InnoDB: 文件操作中出现操作系统错误编号 13。 InnoDB:错误意味着mysqld没有访问权限 InnoDB:目录。 InnoDB:文件名 ./ibdata1 InnoDB:文件操作调用:‘创建’。 InnoDB:无法继续操作。 “ 退出代码:1 进程错误:“未知错误” “[ 0:akonadiserver(_Z11akBacktracev + 0x35)[0x8086055] 1:akonadiserver()[0x8086516] 2:[0xb778b400] 3:[0xb778b416] 4:/lib/libc.so.6(gsignal+0x51)[0xb6efc941] 5:/lib/libc.so.6(中止+0x182)[0xb6effe42] 6:/usr/lib/libQtCore.so.4(_Z17qt_message_output9QtMsgTypePKc+0x8c)[0xb75332dc] 7:akonadiserver(_ZN15FileDebugStream9writeDataEPKcx + 0xc4)[0x8087574] 8:/usr/lib/libQtCore.so.4(_ZN9QIODevice5writeEPKcx+0x8e)[0xb75ce68e] 9:/usr/lib/libQtCore.so.4(+0x103425) [0xb75de425] 10:/usr/lib/libQtCore.so.4(_ZN11QTextStreamD1Ev+0x3d)[0xb75df95d] 11:akonadiserver(_ZN6QDebugD1Ev + 0x43)[0x8081b73] 12:akonadi服务器(_ZN13DbConfigMysql19startInternalServerEv+0x1c27)[0x810c177] 13:akonadiserver(_ZN7Akonadi13AkonadiServer20startDatabaseProcessEv + 0xe3)[0x8087a23] 14:akonadi服务器(_ZN7Akonadi13AkonadiServerC1EP7QObject+0xca)[0x8088b6a] 15:akonadi服务器(_ZN7Akonadi13AkonadiServer8instanceEv+0x48)[0x808a1d8] 16:akonadi服务器(主+0x364)[0x8080fb4] 17:/lib/libc.so.6(__libc_start_main + 0xe7)[0xb6ee8ce7] 18:akonadiserver()[0x8080b81] ] “ ProcessControl:应用程序“akonadiserver”返回退出代码 255(未知错误) 搜索路径:(“/ home / patches / bin”,“/ usr / local / sbin”,“/ usr / local / bin”,“/ usr / sbin”,“/ usr / bin”,“/ sbin”,“/ bin”,“/ usr / games”,“/ usr / sbin”,“/ usr / local / sbin”,“/ usr / local / libexec”,“/ usr / libexec”,“/ opt / mysql / libexec”,“/ opt / local / lib / mysql5 / bin”,“/ opt / mysql / sbin”) 找到 mysql_install_db:“/usr/bin/mysql_install_db” 找到 mysqlcheck:“/usr/bin/mysqlcheck” 初始连接期间数据库进程意外退出! 可执行文件:“/usr/sbin/mysqld-akonadi” 参数:(“ --defaults-file = /home/patches/.local/share/akonadi//mysql.conf”,“ --datadir = /home/patches/.local/share/akonadi/db_data/”,“ --socket = /home/patches/.local/share/akonadi/socket-pleistocene/mysql.socket”) 标准输出:“” stderr:“无法打开所需的默认文件:/home/patches/.local/share/akonadi//mysql.conf 默认处理中出现致命错误。程序已中止 110209 16:41:12 [警告] 无法创建测试文件 /home/patches/.local/share/akonadi/db_data/pleistocene.lower-test 110209 16:41:12 [警告] 无法创建测试文件 /home/patches/.local/share/akonadi/db_data/pleistocene.lower-test 110209 16:41:12 [注意] 插件‘FEDERATED’已被禁用。 /usr/sbin/mysqld-akonadi:找不到文件:“./mysql/plugin.frm”(errno:13) 110209 16:41:12 [错误] 无法打开 mysql.plugin 表。请运行 mysql_upgrade 来创建它。 110209 16:41:12 InnoDB: 文件操作中出现操作系统错误编号 13。 InnoDB:错误意味着mysqld没有访问权限 InnoDB:目录。 InnoDB:文件名 ./ibdata1 InnoDB:文件操作调用:‘创建’。 InnoDB:无法继续操作。 “ 退出代码:1 进程错误:“未知错误” “[ 0:akonadiserver(_Z11akBacktracev + 0x35)[0x8086055] 1:akonadiserver()[0x8086516] 2:[0xb784e400] 3:[0xb784e416] 4:/lib/libc.so.6(gsignal+0x51)[0xb6fbf941] 5:/lib/libc.so.6(中止+0x182)[0xb6fc2e42] 6:/usr/lib/libQtCore.so.4(_Z17qt_message_output9QtMsgTypePKc+0x8c)[0xb75f62dc] 7:akonadiserver(_ZN15FileDebugStream9writeDataEPKcx + 0xc4)[0x8087574] 8:/usr/lib/libQtCore.so.4(_ZN9QIODevice5writeEPKcx+0x8e)[0xb769168e] 9:/usr/lib/libQtCore.so.4(+0x103425) [0xb76a1425] 10:/usr/lib/libQtCore.so.4(_ZN11QTextStreamD1Ev+0x3d)[0xb76a295d] 11:akonadiserver(_ZN6QDebugD1Ev + 0x43)[0x8081b73] 12:akonadi服务器(_ZN13DbConfigMysql19startInternalServerEv+0x1c27)[0x810c177] 13:akonadiserver(_ZN7Akonadi13AkonadiServer20startDatabaseProcessEv + 0xe3)[0x8087a23] 14:akonadi服务器(_ZN7Akonadi13AkonadiServerC1EP7QObject+0xca)[0x8088b6a] 15:akonadi服务器(_ZN7Akonadi13AkonadiServer8instanceEv+0x48)[0x808a1d8] 16:akonadi服务器(主+0x364)[0x8080fb4] 17:/lib/libc.so.6(__libc_start_main + 0xe7)[0xb6fabce7] 18:akonadiserver()[0x8080b81] ] “ ProcessControl:应用程序“akonadiserver”返回退出代码 255(未知错误) “akonadiserver” 崩溃过于频繁,并且无法重新启动!
我尝试移动 ~/.local/share/akonadi 文件夹并重新运行它,我也尝试以全新用户身份启动 Akonadi,但都无济于事。
@djeikyb 请求:
补丁@pleistocene:~$ ls -ld ~/.local drwxrwx--- 3 个补丁 补丁 4096 2011-02-07 03:15 /home/patches/.local patch@pleistocene:~$ mysql_upgrade 查找“mysql”为:mysql 正在查找“mysqlcheck”为:mysqlcheck 使用连接参数运行“mysqlcheck”:“--port=3306”、“--socket=/var/run/mysqld/mysqld.sock” mysqlcheck:尝试连接时出现错误:2002:无法通过套接字“/var/run/mysqld/mysqld.sock”(2)连接到本地 MySQL 服务器 严重错误:升级失败 补丁@pleistocene:~$ mysql_upgrade -S ~/.local/share/akonadi/socket-pleistocene/ 查找“mysql”为:mysql 正在查找“mysqlcheck”为:mysqlcheck 使用连接参数运行“mysqlcheck”:“--port=3306”、“--socket=/var/run/mysqld/mysqld.sock”、“--socket=/home/patches/.local/share/akonadi/socket-pleistocene/” mysqlcheck:尝试连接时出现错误:2002:无法通过套接字“/home/patches/.local/share/akonadi/socket-pleistocene/”(111)连接到本地 MySQL 服务器 严重错误:升级失败
答案1
这似乎是我每次安装时都会遇到的一个问题,我忘记了。上面的解决方案解决了这个问题,但我想知道是否还有其他方法。目前,Ubuntu 11.10 Oneiric,你所需要的只是
sudo aa-complain usr.sbin.mysqld-akonadi
让 Aknoadi 运行起来。但是让我们分析一下这个问题。
Apparmor 是一个管理安全实用程序,用于对程序进行限制。在配置 Ubuntu 时,apparmor 管理实用程序会在 /usr/sbin/mysqld-akonadi 上强制执行安全配置文件。此配置文件位于 /etc/apparmor.d/usr.sbin.mysqld-akonadi”,其中包含以下规范,我在此将其缩写以适应特定情况:
profile /usr/sbin/mysqld {
## [stuff snipped]
@{HOME}/.local/share/akonadi/** rwk,
}
我不确定,但我相信“r”表示“读取”,“w”表示“写入”,“k”表示“mknod”。这表示允许 mysqld 在用户的 aknoadi 目录下的任何位置创建文件和目录。
根据 /var/log/kern.log,/usr/sbin/mysqld-akonadi 失败的原因如下:
Apr 11 14:14:42 adiron kernel: [572346.502653] type=1400 audit(1334168082.226:675): apparmor="ALLOWED" operation="mknod" parent=31088 profile="/usr/sbin/mysqld-akonadi///usr/sbin/mysqld" name="/home/xxxxxx/.local/share/akonadi/db_data/adiron.lower-test" pid=31090 comm="mysqld" requested_mask="c" denied_mask="c" fsuid=1000 ouid=1000
它说它恰好在“mknod”调用时失败。很奇怪,因为我认为它已为此配置。
然而,“man apparmor”包含以下几行:
“受限进程无法调用 mknod(2) 来创建字符或块设备。”
无论特定配置文件中的规范如何,此限制似乎都存在。“受限”进程是处于“强制”模式的进程。发出上述“aa-complain”命令可“取消限制”该进程,然后允许它创建套接字,只会抱怨它,以及允许它执行的其他所有操作,从而增加您的日志。
目前尚不清楚是否可以在 akonadi 端配置使用“mknod”创建 mysql 套接字的这种看似无法规避的限制。无论如何,这些似乎只是 Akonadi 日志中的“警告”,而真正的错误似乎来自以下方面:
Apr 11 13:00:10 adiron kernel: [567875.200843] type=1400 audit(1334163610.926:57): apparmor="DENIED" operation="open" parent=15318 profile="/usr/sbin/mysqld-akonadi///usr/sbin/mysqld" name="/home/xxxxx/.local/share/akonadi/db_data/ibdata1" pid=15320 comm="mysqld" requested_mask="rw" denied_mask="rw" fsuid=1000 ouid=1000
Apr 11 13:00:11 adiron kernel: [567875.355533] type=1400 audit(1334163611.078:58): apparmor="DENIED" operation="open" parent=15327 profile="/usr/sbin/mysqld-akonadi///usr/sbin/mysqld" name="//home/xxxxx/.local/share/akonadi/mysql.conf" pid=15329 comm="mysqld" requested_mask="r" denied_mask="r" fsuid=1000 ouid=1000
Apparmor 似乎配置为允许。我对此感到困惑。但是,将安全性关闭并切换到投诉模式可以使其工作。我想您可以从 /etc/apparmor.d/ 中删除 usr.sbin.mysql-akonadi,这样同样有效。
答案2
就我而言,这与安装的 mysql-server 和 mysql-server-5.1 软件包有关。如果我卸载它们,akonadi 就会重新开始工作。太糟糕了,我的笔记本上也需要 mysql-server...
好像 http://brahmalok.wordpress.com/2010/02/13/akonadi-error-solved/ 包含答案:
sudo aa-投诉mysqld sudo /etc/init.d/apparmor 重新加载 sudo aa-投诉mysqld-akonadi sudo /etc/init.d/apparmor 重新加载 akonadictl 启动
答案3
我在从 natty 安装升级的 kubuntu oneiric 上以及在另一台装有 kubuntu natty 的机器上也遇到了这个问题。
在两台机器上,aa-complain 魔法都有帮助。
在 natty 上,我还必须删除该~/.local/share/akonadi
目录(在 oneiric 上我也多次这样做过)
还不确定安装是否mysql-server
起到了作用(我还不敢在两台机器上卸载它)
不过,Akonadi 似乎可以在 OpenSuSE 11.4.(KDE 4.6.0)盒子上开箱即用。
答案4
据我所知,问题出在 akonadi 服务器配置中:升级之前,mysql 服务器在用户设置中设置为 /usr/sbin/mysqld(不是系统,因此未升级)升级后,apparmor 配置文件用于'/usr/sbin/mysqld-akonadi',将 mysql 服务器更改为此可解决所有问题...至少对我来说是这样。