Я получаю сообщение об ошибке при компиляции документа внутри 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.