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 스크립트에 추가하십시오.