Ошибка компиляции pdflatex в задании CI, но не в интерактивной оболочке

Ошибка компиляции pdflatex в задании CI, но не в интерактивной оболочке

Я получаю сообщение об ошибке при компиляции документа внутри Docker-контейнера Ubuntu 22.04 во время задания Gitlab CI:

!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, отсутствует определение переменной окружения HOME. Это приводит к неправильному расширению ~ в TEXMFVAR, определенном в texmf.cnf (который в моей системе — ~/.texlive2021/texmf-var), и, в свою очередь, к неправильному имени папки, которую пытается создать скрипт mktexdir. Всего этого не произошло при ручной компиляции, поскольку я делал это в интерактивной оболочке внутри того же контейнера, и для этой оболочки HOME была правильно определена.

Мне удалось исправить это, добавив эту строку:

- export HOME=/root

в скрипт CI перед вызовом pdflatex.

Связанный контент