在 Gitlab CI 作业期间在 Ubuntu 22.04 Docker 容器内编译文档时出现错误:
!pdfTeX error: /usr/bin/pdflatex (file tcrm1000): Font tcrm1000 at 600 not found
==> Fatal error occurred, no output PDF file produced!
最奇怪的是,如果我手动启动容器,然后编译文档,则不会出现任何错误。我需要更多有关什么会产生上述错误的见解(例如环境变量?)才能对其进行故障排除。
编辑:更仔细地检查编译失败的日志我发现了这一点:
kpathsea: Running mktexpk --mfmode / --bdpi 600 --mag 1+0/600 --dpi 600 tcrm1000
mktexpk: /usr/share/texlive/texmf-dist/web2c/mktexdir ./.texlive2021/texmf-var/fonts/pk/ljfour/jknappen/ec failed.
kpathsea: Appending font creation commands to missfont.log.
对于成功的手动执行,我得到:
kpathsea: Running mktexpk --mfmode / --bdpi 600 --mag 1+0/600 --dpi 600 tcrm1000
mktexpk: Running mf-nowin -progname=mf \mode:=ljfour; mag:=1+0/600; nonstopmode; input tcrm1000
This is METAFONT, Version 2.71828182 (TeX Live 2022/dev/Debian) (preloaded base=mf)
. . .
看起来这可能是主要错误,但我不明白为什么它只发生在 CI 中。
答案1
我发现了问题:CI 生成的 shell 缺少 HOME 环境变量的定义。这导致 texmf.cnf 中定义的 TEXMFVAR 中的 ~ 扩展不正确(在我的系统中是 ~/.texlive2021/texmf-var),进而导致 mktexdir 脚本尝试创建的文件夹名称不正确。所有这些在手动编译中都没有发生,因为我是在同一容器内的交互式 shell 中执行此操作,并且对于此 shell,HOME 已正确定义。
我可以通过添加以下行来修复:
- export HOME=/root
在调用 pdflatex 之前添加到 CI 脚本中。