在 Fedora Silverblue 上,在工具箱中运行,以前运行良好的 ConTeXt 现在拒绝启动。
第一个错误如下:
(Fatal format file error; I'm stymied)mtx-context | fatal error: return code: 256
有一个常问问题项目,但无论多少fmtutil --all -user
,sudo fmtutil --all -sys
或context --make
都sudo context --make
不起作用。它仍然失败。
了解错误后,TeX 二进制文件不知道要使用哪种 TeX 方言。是纯 TeX、LaTeX 还是 ConTeXt?它缺少正确格式的文件来了解发生了什么。在新的工具箱中重新安装 texlive 并不能解决问题。那时我看到错误消息路径与我的主目录有关,具体来说~/.cache/texlive
。
我只是rm -rf ~/.cache/texlive
(任何好的缓存都可以随时删除)。错误消失了。
现在,context
返回成功错误代码,但没有生成文件,并且最后一行有一个可疑的错误消息:
resolvers | formats | unable to change to format path '/var/home/mildred/.cache/texlive/luatex-cache/context/c8ffba5311d077c16376bba44d5fa793/formats/luatex'
该目录是空的(我之前删除了缓存),也context --make
没有什么帮助
答案1
这里有一个关于这个特定错误的类似问题:MacTeX 2020:“无法更改格式路径”
错误的相关解释来自邮件列表主题是:
这些消息来自文件 luat-fmt.lua 的中间部分(在我的系统中分别是第 180 行和第 183 行),当时 ConTeXt 试图更改工作目录(这就是“更改”在此上下文中的意思,只是移动到其他目录,如 cd 或 chdir)。相关摘录如下
report_format("changing to format path %a",validformatpath) lfs.chdir(validformatpath) if dir.current() ~= validformatpath then return fatalerror(startupdir,"unable to change to format path %a",validformatpath) end
在您的情况下,validformatpath 是 $TMPDIR 的子目录,位于 /var/folders/ 下。但是,如果您的 Mac 与我的类似,/var 实际上是指向 /private/var 的符号链接,因此 dir.current() 会报告以 /private 开头的路径,并且测试失败。
您可以通过将 TMPDIR 设置为其他值来解决这个问题,该值不以 /var 开头 - 也不是 /tmp,因为这也是一个符号链接:-) 它应该与您的主文件夹中的临时目录一起工作。
这里的问题不是出在 Mac OS X 路径上,而是出在 Fedora Silverblue 中的 homedit 是一个符号链接:
lrwxrwxrwx. 1 root root 9 Jan 3 18:40 /home -> /var/home
错误消息中显示,路径包含/home
而不是/var/home
。
我们可以看到/usr/bin/context
:
#!/usr/bin/sh
export TEXMF=/usr/share/texlive/texmf-dist;
export TEXMFCNF=/usr/share/texlive/texmf-dist/web2c;
export TEXMFCACHE=$HOME/.cache/texlive;
/usr/bin/mtxrun --script context "$@"
解决您的问题的方法是运行(调整您的用户名):
HOME=/var/home/mildred context yourfile.tex