mimetype 无法识别 pdf 文件:mime hell

mimetype 无法识别 pdf 文件:mime hell

直到最近,我才遇到打开 pdf 文件的问题。然后,我想阅读 TeX 的 xcolor 包,并输入以下命令:

texdoc xcolor

这一直有效,可以在我首选的 pdf 查看器 qpdfview 中打开文档。但现在,它尝试使用 qpdfview 打开它,但 qpdfview 显示错误:

Could not open '/usr/share/texlive/texmf-dist/doc/latex/xcolor/xcolor.pdf'.

在终端,我收到以下错误消息:

Unknown MIME type: ""
"Could not match file type of '/usr/share/texlive/texmf-dist/doc/latex/xcolor/xcolor.pdf'!"

我在 Ubuntu 21.04 下运行 i3 平铺窗口管理器,并且我的 $XDG_CURRENT_DESKTOP 和 $DESKTOP_SESSION 设置为“i3”。

因此,在一个已知良好的 pdf 文件中,我输入:

$ mimetype TrigLocal.pdf
TrigLocal.pdf: text/plain

尽管,

$ file --mime-type
application/pdf

正确的。

所以我尝试了

$ xdg-open TrigLocal.pdf
gio: file:///home/ded/TeXexamples/TrigLocal.pdf: No application is registered as handling this file

好的,也许 gio 设置不正确:

$ gio mime TrigLocal.pdf
No default applications for “TrigLocal.pdf”

我尝试使用设置处理程序

$ xdg-mime default qpdfview.desktop application/pdf

但当我查询它时:

$ xdg-mime query default application/pdf
qpdfview-chromium.desktop

这是一个变体,但我没有设置。无论如何,它对 xdg-open 没有影响:

$ xdg-open TrigLocal.pdf
gio: file:///home/ded/TeXexamples/TrigLocal.pdf: No application is registered as handling this file

我不知道哪里出了问题,而且我在任何地方都找不到明确的指导,至少没有有效的指导。

在 ubuntu 下将文件类型与处理程序关联的整个生态系统让我感到困惑,因此我希望能有一个很好的概述教程来解释以下关系:

mime 类型 xdg-open gio

以及任何其他与帮助我修复非 Gnome、非 KDE 系统相关的内容。

更新

根据@steeldriver 的建议,我运行了:

$ mimetype --debug TrigLocal.pdf
> Data dirs are: /home/ded/.local/share, /var/lib/flatpak/exports/share /home/ded/.local/share /flatpak/exports/share
> Checking inode type
> Checking globs for basename 'TrigLocal.pdf'
> Checking for extension '.pdf'
> Checking globs for basename 'triglocal.pdf'
> Checking for extension '.pdf'
> File exists, trying default method
TrigLocal.pdf: text/plain

我在 ~/.local/share 中没有看到任何有趣的东西,但是我看到了这个:

$ cat ~/.local/share/applications/mimeapps.list 
[Default Applications]
application/pdf=qpdfview.desktop
application/html=google-chrome.desktop
text/html=google-chrome.desktop
x-scheme-handler/http=google-chrome.desktop
x-scheme-handler/https=google-chrome.desktop
x-scheme-handler/about=google-chrome.desktop
x-scheme-handler/unknown=google-chrome.desktop

[Added Associations]
application/pdf=evince.desktop;zathura-pdf-poppler.desktop;

答案1

我找到了问题。运行 mimetype --debug 给出了提示,但我没有看到它。(感谢@steeldriver)我尝试以 root 身份对同一个文件执行相同的命令,它给出了正确的答案。

事实证明,由于某种原因,环境变量 XDG_DATA_DIRS 的设置进入了我的 shell 配置文件,并且它排除了默认目录。

根据XDG 规范,它默认设置为“/usr/local/share:/usr/share”,而我的设置覆盖了这些,因此 /usr/share/mime/freedesktop.org.xml 处的默认 mime 数据库没有被读入 mime 检测系统。

由于错误的设置添加了一些与 flatpak 相关的目录,所以我一定是在尝试 flatpaks 时添加了该设置,但我不记得做过任何这样的事情,所以也许该设置是在我背后添加到我的 config.fish 文件中的。

无论如何,我希望这对将来的某些人有所帮助。

相关内容