我想通过安装 SVGO-Optimizer 来扩展 Inkscape(使用 snap 安装)超音速巡航机在 Inkscape 的本地扩展目录中。
根据 Inkscape 首选项对话框(编辑/首选项/系统),要使用的目录是(并放入扩展名)
$HOME/.config/inkscape/extensions/
我想要安装inkscape-svgo.inx
。我跟着inkscape-svgo 说明。
但是,Apparmor 不允许我在 Inkscape GUI 中执行扩展。我无法执行“另存为 SVGO 优化的 SVG”对话框。
出现一个不具信息性的“另存为 [任何文件名] 失败”对话框。
我怀疑这是 Apparmor 问题。
如何定义或扩展 Apparmor 规则以允许 Inkscape 执行 SVGO 扩展?
journalctl
给出了这个输出:
AVC apparmor="DENIED" operation="open" profile="snap.inkscape.inkscape" name="/proc/148064/mountinfo" pid=148064 comm="inkscape" requested_mask="r" denied_mask="r" fsuid=1000 ouid=1000
AVC apparmor="DENIED" operation="exec" profile="snap.inkscape.inkscape" name="$HOME/.config/inkscape/extensions/inkscape-svgo" pid=149456 comm="inkscape" requested_mask="x" denied_mask="x" fsuid=1000 ouid=1000
Script::execute(): failed to execute program '$HOME/.config/inkscape/extensions/inkscape-svgo'.
Reason: Failed to execute child process “$HOME/.config/inkscape/extensions/inkscape-svgo” (Permission denied)
我的 Inkscape 版本:
snap list inkscape
Name Version Rev Tracking Publisher Notes
inkscape 1.1-ce6663b3b7-2021-05-25 9090 latest/stable inkscape✓ -
这些是 inkscape apparmor 配置文件,位于目录中/var/lib/snapd/apparmor/profiles/
:
38032 /var/lib/snapd/apparmor/profiles/snap.inkscape.hook.configure
75557 /var/lib/snapd/apparmor/profiles/snap.inkscape.inkscape
70951 /var/lib/snapd/apparmor/profiles/snap.inkscape.viewer
第一个数字是文件大小(以字节为单位)。
如你所见,它们很长、很复杂,而且相互依赖。
答案1
AppArmor 规则在存储在中的配置文件中定义。/etc/apparmor.d/
您需要使用规则更新 AppArmor 配置文件,以允许文件系统访问您感兴趣的 Inkscape 路径。