如何使用 CLI 工具从 Linux 系统中完全删除 mime 关联?

如何使用 CLI 工具从 Linux 系统中完全删除 mime 关联?

我正在运行 Arch Linux 和 KDE。我已经在多个设备上安装了 Arch KDE,通常情况下,文件没有特定的 mime 类型关联.pub(在我的情况下是公钥)。它们将由纯文本文档的默认处理程序打开。这是我期望在标准 Arch Linux 安装中看到的内容:

$ xdg-mime query filetype id_rsa_test.pub
text/plain

但是,在我的主桌面上,.pub文件与 ms-publisher 关联。

$ xdg-mime query filetype id_rsa_test.pub
application/vnd.ms-publisher

我想彻底删除这个关联。以下是我发现这种关联的证据的一些地方:

$ grep -irl '.pub' ./.local/share/mime/
./.local/share/mime/packages/application-vnd.ms-publisher.xml
./.local/share/mime/application/vnd.ms-publisher.xml
./.local/share/mime/globs
./.local/share/mime/globs2
./.local/share/mime/types
./.local/share/mime/mime.cache

$ sudo grep -irl 'ms-publisher' /usr
/usr/share/applications/mimeinfo.cache
/usr/share/mime/packages/freedesktop.org.xml
/usr/share/mime/application/vnd.ms-publisher.xml
/usr/share/mime/globs
/usr/share/mime/globs2
/usr/share/mime/subclasses
/usr/share/mime/types
/usr/share/mime/mime.cache
/usr/share/icons/breeze/mimetypes/64/application-vnd.ms-publisher.svg
/usr/share/icons/breeze/mimetypes/22/application-vnd.ms-publisher.svg
/usr/share/icons/breeze/breeze-icons.rcc
/usr/share/icons/breeze/icon-theme.cache
/usr/share/icons/breeze-dark/mimetypes/22/application-vnd.ms-publisher.svg
/usr/share/icons/breeze-dark/breeze-icons-dark.rcc
/usr/share/icons/breeze-dark/icon-theme.cache
/usr/lib/libreoffice/share/xdg/draw.desktop

根据xdg-mime手册页,该uninstall命令可能会起作用。至少就我而言,该uninstall命令没有任何效果。

# xdg-mime uninstall /usr/share/mime/application/vnd.ms-publisher.xml
# echo $?
0

# sudo grep -irl 'ms-publisher' /usr
/usr/share/file/misc/magic.mgc
/usr/share/applications/mimeinfo.cache
/usr/share/mime/packages/freedesktop.org.xml
/usr/share/mime/application/vnd.ms-publisher.xml
/usr/share/mime/globs
/usr/share/mime/globs2
/usr/share/mime/subclasses
/usr/share/mime/types
/usr/share/mime/mime.cache
/usr/share/icons/breeze/mimetypes/64/application-vnd.ms-publisher.svg
/usr/share/icons/breeze/mimetypes/22/application-vnd.ms-publisher.svg
/usr/share/icons/breeze/breeze-icons.rcc
/usr/share/icons/breeze/icon-theme.cache
/usr/share/icons/breeze-dark/mimetypes/22/application-vnd.ms-publisher.svg
/usr/share/icons/breeze-dark/breeze-icons-dark.rcc
/usr/share/icons/breeze-dark/icon-theme.cache
/usr/lib/libreoffice/share/xdg/draw.desktop

# grep -irl '.pub' /usr/share/mime/
/usr/share/mime/packages/freedesktop.org.xml
/usr/share/mime/packages/calibre-mimetypes.xml
/usr/share/mime/application/pkcs7-mime.xml
/usr/share/mime/application/pkcs8-encrypted.xml
/usr/share/mime/application/epub+zip.xml
/usr/share/mime/application/x-pkcs7-certificates.xml
/usr/share/mime/application/pkcs8.xml
/usr/share/mime/application/pkcs10.xml
/usr/share/mime/application/pkcs12.xml
/usr/share/mime/application/vnd.ms-publisher.xml
/usr/share/mime/globs
/usr/share/mime/globs2
/usr/share/mime/magic
/usr/share/mime/subclasses
/usr/share/mime/types
/usr/share/mime/generic-icons
/usr/share/mime/mime.cache

对于我的问题,我想大致了解一下如何去除任何仅使用 CLI 工具从我的系统中进行 mime 类型关联。

编辑:回复答案:

在新用户帐户上,我显示以下内容:

sudo pacman -Qs shared-mime-info
local/shared-mime-info 1.15-2
    Freedesktop.org Shared MIME Info

$ xdg-mime query filetype id_rsa_test.pub
text/plain

$ xdg-mime query default text/plain
atom.desktop

$ less ~/.config/mimeapps.list
/home/deleteme/.config/mimeapps.list: No such file or directory

该系统已更新多次(每天),并且 ms-publisher 与.pub文件的关联尚未恢复。请注意,该系统已shared-mime-info安装,并且我能够使用纯文本编辑器打开公钥文件,正如我所期望的那样。在该系统上的另一个用户帐户中,我通过~/.config/mimeapps.list该用户的条目拥有我的首选关联。

$ xdg-mime query default text/plain
org.kde.kate.desktop

回到主要问题:如何.pub在系统级别完全删除文件与 Okular 和/或 Libre Office Draw 的关联?即使这不是经批准的方法,我该怎么做?

答案1

.pub 文件将由纯文本文档的默认处理程序打开。这就是我期望在我的标准 Arch Linux 上看到的

你应该期待这一点的原因。该shared-mime-info包假定.pub是 Microsoft Publisher 文档。如果您认为默认值应该是plain/text,那么您需要向上游报告此情况。

我本人认为这是一个错误,他们不应该使 M$ 专有格式扩展优先于 GNU/linux 本机文件扩展。或者更好地使用 use魔法此外全局

我想了解如何仅使用 CLI 工具从系统中删除任何 mime 类型关联

您根本不应该删除系统范围的 mime 类型关联。即使你设法做到了,它也会随着系统更新而回来。

您应该做的是添加您自己的 mime 类型来覆盖系统类型。正如您从其他问题中已经知道的那样这里, 您可以使用全局删除所有覆盖以前的定义

答案2

系统上的系统范围默认 MIME 关联由

/usr/share/mime/packages/freedesktop.org.xml

所以,如果你想让你的系统完全忘记你不愉快的 mime 类型,你必须删除部分

<mime-type type="application/vnd.ms-publisher">...</mime-type>

从这个文件,然后运行

sudo update-mime-database /usr/share/mime

在那之后。如何“使用 CLI 工具”编辑 XML 文件是另一个问题:)

Munzir Taha 明确指出了另一个问题:

稍后会随着系统更新而回来

还有最终的解决方案—— i(不可变)属性:

sudo chattr +i /usr/share/mime/packages/freedesktop.org.xml

在 Arch Linux 上,您将收到以下警告吃豆人该文件无法升级,但不会破坏整个升级过程。

答案3

有一个更简单的方法。

我不知道 Dolphin,但在 XFCE 的 Thunar 中,右键单击文件 >打开用>设置默认应用程序, 在下面推荐应用,右键单击应用程序名称,选择忘记协会

在此输入图像描述

或者更简单:只需手动编辑 ~/.config/mimeapps.list 并在下面添加应用程序名称[删除关联]。这实际上就是上面提到的过程所做的事情。

相关内容