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 資料庫未被讀取進入啞劇檢測系統。

由於錯誤的設置添加了一些與flatpak 相關的目錄,我必須添加與嘗試flatpak 相關的設置,但我不記得做過任何這樣的事情,所以也許該設置是在我背後添加到我的config.fish 文件中的。

無論如何,我希望這對將來的人有幫助。

相關內容