如何使file命令使用update-mime-database命令生成的magic文件

joc*_*tee 5 compilation file mime-types

我使用的是 Ubuntu 服务器 11.10。

我的问题是该file命令检测到应具有video/mp2tmime 类型的文件application/octet-stream

所以这就是我所做的:

  1. 我确保其中/usr/share/mime/packages/freedesktop.org.xml包含正确的 mp2t 描述。

  2. 我运行的update-mime-database命令除其他外还创建了一个新的魔术文件:/usr/share/mime/magic.

  3. 我发现运行时file -v,它说它正在用作/etc/magic:/usr/share/misc/magic魔术文件。

  4. 所以,我告诉file命令使用我的新魔法文件:file -m /usr/share/mime/magic MY_VIDEOFILE

这就是问题开始的地方。当使用新的 magic 文件运行file命令时,我得到以下输出:

/usr/share/mime/magic, 1: Warning: offset `MIME-Magic' invalid
/usr/share/mime/magic, 1: Warning: type `MIME-Magic' invalid
/usr/share/mime/magic, 2: Warning: offset `[90:application/docbook+xml]' invalid
/usr/share/mime/magic, 2: Warning: type `[90:application/docbook+xml]' invalid
  .
  . (921 lines removed from the output)
  .
/usr/share/mime/magic, 1173: Warning: offset `[10:text/x-tex]' invalid
/usr/share/mime/magic, 1173: Warning: type `[10:text/x-tex]' invalid
file: No current entry for continuation
Run Code Online (Sandbox Code Playgroud)

看起来该file命令期望的魔术文件格式与update-mime-database输出的魔术文件格式不同。

我在这里错过了什么?

如何使file命令接受新的 mime 类型?

joc*_*tee 2

使用共享 MIME 类型数据库似乎是错误的方法。事实上,看起来共享 MIME 数据库和file命令使用单独的数据库(具有不同的格式)。

video/mp2t由于命令版本太旧,未报告MIME 类型file

Ubuntu 11.10。附带该file命令的 5.04 版本。这是无法报告video/mp2t类型的。

这就是我为解决问题所做的:

我下载了较新版本的libmagic1 deb 软件包。这个版本是 5.09-2。

我安装了它:

sudo dpkg -i libmagic1_5.09-2_amd64.deb
Run Code Online (Sandbox Code Playgroud)

问题解决了!

$ file MY_VIDEO_FILE --mime-type
MY_VIDEO_FILE: video/mp2t
Run Code Online (Sandbox Code Playgroud)