安装 php+mysql 时如何修复 AppArmor 无法打开错误?

安装 php+mysql 时如何修复 AppArmor 无法打开错误?

我想安装php5-imap php5-ldap php5-curl

sudo apt-get install php5-imap php5-ldap php5-curl

我收到此错误:

AppArmor parser error for /etc/apparmor.d/usr.sbin.mysqld in /etc/apparmor.d/usr.sbin.mysqld at line 9: Could not open 'abstractions/mysql'

这个问题该如何解决?

答案1

您缺少文件 abstractions/mysql。当我尝试在重新安装 MySQL 之前完全删除它时,发生了这种情况。我通过用另一台服务器的副本替换该文件解决了此问题。我的文件内容如下所示:

# ------------------------------------------------------------------
#
#    Copyright (C) 2002-2006 Novell/SUSE
#    Copyright (C) 2013 Christian Boltz
#
#    This program is free software; you can redistribute it and/or
#    modify it under the terms of version 2 of the GNU General Public
#    License published by the Free Software Foundation.
#
# ------------------------------------------------------------------

   /var/lib/mysql{,d}/mysql{,d}.sock rw,
   /{var/,}run/mysql{,d}/mysql{,d}.sock rw,
   /usr/share/{mysql,mysql-community-server,mariadb}/charsets/ r,
   /usr/share/{mysql,mysql-community-server,mariadb}/charsets/*.xml r,

尝试创建文件并添加上述内容:

sudo nano /etc/apparmor.d/abstractions/mysql

答案2

看看 Ubuntu wiki 是否有帮助:https://wiki.ubuntu.com/DebuggingApparmor

具体来说,

调试时,将 apparmor 置于“投诉”模式也很有用。这将允许您的应用程序正常运行,同时 apparmor 报告不在配置文件中的访问。要启用“投诉”模式,请使用:

sudo aa-complain /path/to/bin

其中“/path/to/bin”是二进制文件的绝对路径,如“audit”条目的“profile=...”部分所述。例如:

sudo aa-complain /usr/sbin/slapd

要重新启用强制模式,请改用“aa-enforce”:

sudo aa-enforce /path/to/bin

要禁用配置文件:

sudo touch /etc/apparmor.d/disable/path.to.bin
sudo apparmor_parser -R /etc/apparmor.d/path.to.bin

要在 Ubuntu 10.10 及更早版本中禁用配置文件:

sudo touch /etc/apparmor.d/disable/path.to.bin sudo apparmor_parser -R /etc/apparmor.d/path.to.bin

在 11.04 及更高版本中:

sudo aa-disable /etc/apparmor.d/path.to.bin

为了测试目的禁用所有 AppArmor,请使用apparmor=0内核命令行进行启动。

答案3

这对我有用:(来源:https://forum.snapcraft.io/t/unable-to-install-snap-from-store-or-locally/4629/15

首先删除 apparmor 和 snapd(在我的情况下,错误与 snapd 有关,我认为你不必在你的情况下将其删除)

sudo apt-get purge apparmor
sudo apt-get purge apparmor-profiles
sudo apt-get purge apparmor-utils
sudo apt-get remove snapd snapd-confine

现在将它们全部重新安装(同样,您可能不需要安装 snapd):

sudo apt-get install apparmor-utils
sudo apt install apparmor-profiles apparmor-profiles-extra vim-addon-manager
sudo apt install snapd snapd-login-service snap-confine 

答案4

这是一个老问题,但也许有人会发现它很有用。

有时应用程序的某些部分会被拆分成不同的包。apparmor 配置文件也是如此。它们被拆分成包apparmor-profilesapparmor-profiles-extra。因此,如果您缺少某些配置文件,请安装apparmor-profiles-extra

相关内容