CI 작업에서 pdflatex 컴파일 오류가 발생했지만 대화형 셸에서는 발생하지 않습니다.

CI 작업에서 pdflatex 컴파일 오류가 발생했지만 대화형 셸에서는 발생하지 않습니다.

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에 의해 생성된 셸에 HOME 환경 변수 정의가 누락되었습니다. 이로 인해 texmf.cnf(내 시스템에서는 ~/.texlive2021/texmf-var)에 정의된 TEXMFVAR에서 ~가 잘못 확장되고 결과적으로 mktexdir 스크립트가 생성하려고 하는 폴더의 이름이 잘못됩니다. 수동 컴파일에서는 동일한 컨테이너 내의 대화형 셸에서 이 작업을 수행하고 이 셸의 경우 HOME이 적절하게 정의되었기 때문에 이 모든 작업이 발생하지 않았습니다.

다음 줄을 추가하여 문제를 해결할 수 있었습니다.

- export HOME=/root

pdflatex를 호출하기 전에 CI 스크립트에 추가하십시오.

관련 정보