为什么update-mime-database会抱怨uri/rtspt和其他不寻常的类型?

当运行update-mime-database命令时,通常是由apt-get自动启动的,为什么我总是会收到如下的投诉呢:
Unknown media type in type 'all/all'
Unknown media type in type 'all/allfiles'
Unknown media type in type 'uri/mms'
Unknown media type in type 'uri/mmst'
Unknown media type in type 'uri/mmsu'
Unknown media type in type 'uri/pnm'
Unknown media type in type 'uri/rtspt'
Unknown media type in type 'uri/rtspu'
Unknown media type in type 'fonts/package'
Unknown media type in type 'interface/x-winamp-skin'

看起来似乎没有造成任何伤害,但是在更新过程中出现的慢性错误可能会掩盖我关心的错误。

4个回答

实际上,你可以通过简单地进行修复。

sudo rm /usr/share/mime/packages/kde.xml 
sudo update-mime-database /usr/share/mime

这里是2008年Ana Guerrero的一句话引用,所以你可能会认为现在应该已经修复了。

这些假的MIME类型是由kdelibs与文件/usr/share/mime/packages/kde.xml一起安装的,早在很久以前就有了。它们保存在kde4libs中。

在最近的一个版本中,update-mime-database对于这些未知类型变得冗长,这就是为什么当你更新东西然后运行update-mime-database时会出现这个错误。 这不太可能改变。


还需要在15.10版本中;-( 我已经按照这个方法做了,但是忘记了具体步骤,于是进行了搜索,找到了并再次操作。反复如此。每一次,虽然我不记得文件在哪里以及命令是什么,但我都能找到这篇帖子,并且已经访问和使用了3次(通过谷歌搜索统计的数据,使用的是Chrome浏览器)。我使用了这个搜索字符串,并将其添加在这里,以便它从第二位上升到第一位(如何去除警告“未知媒体类型”)在答案集中。Ubuntu多媒体类型全部/全部未知媒体类型。 - ElderDelp
2删除文件会有什么后果?因为我觉得KDE不会无缘无故地安装那个文件。你可能会失去MIME识别功能。 - Anwar
非常感谢您的回答,但它不适用于14.04。 - Trect

这是与update-mime-database和MIME标准本身有关的问题。最初它应该是可扩展的。但是IETF简化了它,并且没有注册新的主要MIME类型(application/*被用作未区分的通配符)。背后的推理/猜测是,很少有工具能正确地处理新的MIME类型。
现在,至少当update-mime-database看到伪分类器如uri/、fonts/或interface/时不会崩溃。所以我认为它只是抱怨其他应用程序可能会因此而出错。使用strings给我提供了以下“安全”MIME类型的内置列表:
  • text
  • application
  • image
  • audio
  • inode
  • video
  • message
  • model
  • multipart
  • x-content
  • x-epoc
这意味着它会对任何其他x-x.以及vnd.prs.的主要MIME类型进行警告。有趣的是,inode/并不是一个官方的媒体类型。

非常感谢您的宝贵评论。知道自定义命名的MIME类型不起作用非常有用。我尝试创建了一个名为'comprovante/biblioteca'的MIME类型,这就是为什么它在最近的Ubuntu / Linux Mint版本上无法工作的原因。 - Leonardo Montenegro

看起来有一堆KDE库引入了这些本来不友好的Gnome MIME类型定义。在我的情况下,这些库是作为依赖添加到我后来卸载的一个KDE应用程序包中的。
为了删除这堆KDE库及其关联的/usr/share/mime条目,我使用了以下命令:
sudo apt-get purge kdelibs-bin kdelibs-data 
sudo apt-get autoremove --purge
sudo update-mime-database /usr/share/mime

请注意,第一个命令在您确认删除之前不会强制删除您需要的软件包。删除kdelibs-bin将导致一系列大量的软件包变得不再需要,并准备进行自动删除。
我在 Intrepid Ibex的旧错误报告中找到了这个修复的基础。