GitLab Runner无法识别latexmk命令的问题及排查解决
GitLab Runner CI/CD中latexmk命令无法识别的问题及解决方法
问题描述
本地已部署GitLab Runner及CI/CD运行所需的全部环境,执行CI/CD任务时,其他步骤均正常,唯独无法识别latexmk命令,报错信息如下:
'latexmk' is not recognized as an internal or external command, operable program or batch file.
但在相同目录下手动执行该命令可正常识别。
CI配置与脚本说明
.gitlab-ci.yml配置(使用PowerShell运行)
stages: - build - test - deployment pages: stage: deployment script: - pip install -U sphinx - pip install sphinxcontrib-needs - pip install sphinxcontrib-plantuml - pip install sphinxcontrib-programoutput - pip install sphinx-book-theme - cd documentation - .\make.bat html - mv build\doctrees ..\public - mv build\html ..\public - .\make.bat latex - .\generation_pdf.bat - cd .. artifacts: paths: # The folder that contains the files to be exposed at the Page URL - public
生成PDF的脚本内容
通过.\\make.bat latex生成文件后,generation_pdf.bat中调用的脚本内容如下:
@ECHO OFF REM Command file for Sphinx documentation pushd %~dp0 set PDFLATEX=latexmk -pdf -dvi- -ps- set "LATEXOPTS= " set XINDYOPTS=-L english -C utf8 -M sphinx.xdy set XINDYOPTS=%XINDYOPTS% -I xelatex if "%1" == "" goto all-pdf if "%1" == "all-pdf" ( :all-pdf for %%i in (*.tex) do ( %PDFLATEX% %LATEXMKOPTS% %%i ) goto end ) if "%1" == "all-pdf-ja" ( goto all-pdf ) if "%1" == "clean" ( del /q /s *.dvi *.log *.ind *.aux *.toc *.syn *.idx *.out *.ilg *.pla *.ps *.tar *.tar.gz *.tar.bz2 *.tar.xz *.fls *.fdb_latexmk goto end ) :end popd
尝试过程与解决步骤
已在相同目录下模拟GitLab Runner的操作步骤(包括直接执行call make命令),问题依旧。后续尝试两种解决方法:
Fix 1:添加LaTeX路径到Runner环境变量
在runner的config.toml文件中添加:pre_build_script = "$Env:PATH += \";C:\PathToMiktexFolder\""此操作解决了
latexmk命令识别问题,但出现新报错:It seems that this is a fresh TeX installation. Please finish the setup before proceeding. For more information, visit: miktex.org/howto/install-miktex-win
Fix 2:替换TeX发行版
因未找到完成MikTeX初始化设置的方法,卸载MikTeX并安装TeX Live后,问题彻底解决。
内容的提问来源于stack exchange,提问作者Geitjee
相关产品推荐
相关产品推荐

