我知道 Evince 打开链接时存在问题,但这看起来像是一个新的错误。这是在 21.04 中,但我认为错误是最近才出现的,即链接在 21.04 中早些时候就起作用了。因此,我从命令行启动了 evince,当我尝试打开文档中的链接时,出现了此错误:
[205689:205689:0812/101716.420196:FATAL:double_fork_and_exec.cc(131)] execv /opt/google/chrome/crashpad_handler: Permission denied (13)
这是 evince 40.1 和 Chrome 92.0.4515.131
我提交了一个关于此问题的证据:https://gitlab.gnome.org/GNOME/evince/-/issues/1646 并确定问题出在 AppArmor 上,它阻止 evince 调用 Chrome(但允许它使用 Firefox)。所以我需要修改 evince 的 AppArmor 配置文件。我不知道该怎么做。我尝试使用 aa-logprof,但我显然需要我能理解的说明。如果能提供分步说明如何对 evince 配置文件进行必要的修改,我将不胜感激。
更新:成功。我在 abstractions/ubuntu_helpers 中的 sanitized_helper 配置文件中添加了以下行:
/opt/google/chrome/crashpad_handler Pixr,
并重新加载了 evince 配置文件。现在,我在点击链接时收到以下错误:
[20036:20069:0813/075235.070369:ERROR:address_tracker_linux.cc(195)] Could not create NETLINK socket: Permission denied (13)
[20036:20065:0813/075235.071590:ERROR:udev_watcher.cc(52)] Failed to initialize a udev monitor.
Opening in existing browser session.
并且链接在新的 chrome 选项卡中成功打开。
答案1
编辑文件 ubuntu-helpers:
sudo gedit /etc/apparmor.d/abstractions/ubuntu-helpers
在 下profile sanitized_helper {
,
找到以 /opt/google/chrome 开头的行。
添加此行:
/opt/google/chrome/crashpad_handler Pixr,
保存文件。
重新加载 evince 配置文件(在 /etc/apparmor.d 中):
sudo apparmor_parser -r usr.bin.evince
答案2
我已经在 AppArmor 上创建了合并请求来解决这个问题: