在 evince 文档查看器中单击的超链接未打开,有关如何修复的任何想法?

Jor*_*are 12 pdf google-chrome evince

正如在论坛中的另一个线程中所指示的那样,我打开了 /usr/share/applications/mimeinfo.cache 文件以检查正确的引用。并注意到这似乎不是问题,甚至有 3 个可选的浏览器可供使用。

x-scheme-handler/http=google-chrome.desktop;chromium-browser.desktop;firefox.desktop;
x-scheme-handler/https=google-chrome.desktop;chromium-browser.desktop;firefox.desktop;
Run Code Online (Sandbox Code Playgroud)

我已经使用终端中的“which”命令检查了程序是否正确命名,如下所示:

$ which google-chrome
$ /usr/bin/google-chrome
Run Code Online (Sandbox Code Playgroud)

所以 google-chrome 应该是第一个选项,但打开 url 的命令似乎并没有到达程序,无论如何都没有到达第二个或第三个选项。

此外,“帮助”菜单中的“在线获取帮助...”命令也不起作用。所以也不是特定文档文件的问题。

我正在运行 Ubuntu 12.04 LTS。如果您需要询问更多相关细节,请这样做。对如何解决这个问题有各种意见会很好,谢谢:-)

更新:我按照要求从终端运行了 evince。
这是我尝试打开链接时得到的:

/opt/google/chrome/google-chrome: line 42: /opt/google/chrome/chrome: Permission denied
/opt/google/chrome/google-chrome: line 42: /opt/google/chrome/chrome: Success
Run Code Online (Sandbox Code Playgroud)

即使我的错误日志不同,我是否应该尝试您建议的修复?

更新:尝试了@maggotbrain 的解决方案和 BINGO,现在我可以更快地学习 pdf 参考文献,感谢兄弟!

Sco*_*and 5

上述解决方案都不适合我,但是这确实有效:

查看当前忽略列表中的内容

ls -la /etc/apparmor.d/disable
Run Code Online (Sandbox Code Playgroud)

现在将文档查看器(evince)添加到该列表中

sudo ln -s /etc/apparmor.d/usr.bin.evince /etc/apparmor.d/disable/usr.bin.evince 
Run Code Online (Sandbox Code Playgroud)

参与变革

sudo service apparmor restart
Run Code Online (Sandbox Code Playgroud)

  • @StéphaneGourichon 那么这样做是危险的事情吗?我不想禁用_所有_安全检查,我只想能够单击链接。 (3认同)
  • @Sh3ljohn 这基本上似乎禁用了应用于证据的所有安全强化。请记住,PDF 基本上是一堆复杂的数据,需要通过复杂的软件堆栈进行解析和显示(并以某种方式执行)。因此它们是已知的攻击媒介。 (2认同)

Kev*_*wen 3

您可能会遇到apparmor 处理外部 URL 的错误。

我在 evince 中打开 URL 的问题导致每当单击 pdf 文档中的 URL 时(在命令行上)生成以下错误:

(evince:32091): EvinceView-CRITICAL **: ev_document_model_set_document: assertion
`EV_IS_DOCUMENT (document)' failed
/usr/lib/chromium-browser/chromium-browser-sandbox: error while loading shared
libraries: libpthread.so.0: failed to map segment from shared object: Permission denied
Run Code Online (Sandbox Code Playgroud)

正如此评论中所建议的,我可以通过执行以下操作来使用 chromium 解决此问题:

将这些行添加到 /etc/apparmor.d/abstractions/ubuntu-helpers 行“/usr/lib*/{,* /} Pixr,”之后:

# From https://bugs.launchpad.net/ubuntu/+source/apparmor/+bug/964510/comments/12
# While the chromium and chrome sandboxes are setuid root, they only link
# in limited libraries so glibc's secure execution should be enough to not
# require the santized_helper (ie, LD_PRELOAD will only use standard system
# paths (man ld.so)).
/usr/lib/chromium-browser/chromium-browser-sandbox PUxr,
/opt/google/chrome/chrome-sandbox PUxr,
/opt/google/chrome/google-chrome Pixr,
/opt/google/chrome/chrome Pixr,
/opt/google/chrome/lib*.so{,.*} m,
Run Code Online (Sandbox Code Playgroud)

最后,运行sudo apparmor_parser -T -W -r /etc/apparmor.d/usr.bin.evince