解决 WSL 中报错 Error: no “view“ mailcap rules found for type “application/msword“

问题背景:

在调试llvm过程的指令选择过程中,如果想查看dag图,在wsl中会出现如下报错

$ clang++ main.cpp -O3 -c -mllvm --view-isel-dags

Writing '/tmp/dag._Z3funii-24c762.dot'...  done. 
Trying 'xdg-open' program... Remember to erase graph file: /tmp/dag._Z3funii-24c762.dot
Error: no "view" mailcap rules found for type "application/msword"
WARNING: You don't seem to have any mimeinfo.cache files.
Try running the update-desktop-database command. If you
don't have this command you should install the
desktop-file-utils package. This package is available from
http://freedesktop.org/wiki/Software/desktop-file-utils/
Can't call method "get_value" on an undefined value at /usr/bin/mimeopen line 159.

可以看到,最后的dag 图还是尝试以 xdg-open 来打开。
尝试使用执行如下命令,会得到一样的报错,只是现在没有了乱码。

$ xdg-open /tmp/dag._Z3funii-c434b2.dot
Error: no "view" mailcap rules found for type "application/msword"
WARNING: You don't seem to have any mimeinfo.cache files.
Try running the update-desktop-database command. If you
don't have this command you should install the
desktop-file-utils package. This package is available from
http://freedesktop.org/wiki/Software/desktop-file-utils/
Can't call method "get_value" on an undefined value at /usr/bin/mimeopen line 159.
Start : 由于出现以下错误,无法运行此命令: 系统找不到指定的文件。。
所在位置 行:1 字符: 1
+ Start "/tmp/dag._Z3funii-c434b2.dot"
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [Start-Process],InvalidOperationException
    + FullyQualifiedErrorId : InvalidOperationException,Microsoft.PowerShell.Commands.StartProcessCommand

什么是xdg-open:

xdg-open 的功能和作用

xdg-open 是一个在 Linux 和其他类 Unix 操作系统中使用的实用工具,用于从命令行打开文件或 URL。它的主要作用是根据文件类型或 URL 调用系统中关联的默认应用程序。

xdg-open 工作原理:

  1. 根据文件扩展名或内容识别文件的MIME类型。这一步需要依赖MIME 数据库(如/etc/mime.types)。
  2. 然后根据MIME类型,查找与该类型关联的默认应用程序。这一步依赖于数据库(如/etc/mailcap)。

解决方案:

1. 首先确认 xdg-open 是否能正常工作

比如:

xdg-open https://baidu.com

如果不能工作,请参考:https://github.com/microsoft/WSL/issues/8892#issuecomment-1772972570

2. 查询目标格式应该对应的一个类型:

$ xdg-mime query filetype /tmp/dag._Z3funii-24c762.dot

application/msword-template

3. 添加对该类型的支持。

$ sudo vim /etc/mailcap

添加如下行:
application/msword; code %s; nametemplate=%s.dot

这里实际设置的是使用 vscode 打开dot 文件。

因此实际的运行结果是会在当前vscode 中打开该dot 文件。如果vscode安装了 dot preview 插件,就可以直接手动切换到 graph 视图。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lylhw13_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值