You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

构建完整TexLive Docker镜像时安装包后出现错误

解决TexLive Docker镜像构建失败问题

问题描述

构建以下Dockerfile时返回非零代码2失败,数月前该构建可正常完成:

FROM texlive/texlive:latest-minimal  # 76d39535e480
RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get upgrade -y && rm -rf /var/lib/apt/lists/*

RUN tlmgr update --self && tlmgr install scheme-full

错误出现在构建最后阶段,关键日志片段如下:

...
[4411/4412, 44:50/44:50] install: collection-xetex [1k]
[4412/4412, 44:51/44:51] install: scheme-full [1k]
running mktexlsr ...
done running mktexlsr.
running mtxrun --generate ...

tlmgr: mtxrun --generate failed (status -1), output:

running updmap-sys ...
done running updmap-sys.
regenerating language.dat
regenerating language.def
regenerating language.dat.lua
regenerating fmtutil.cnf in /usr/local/texlive/2022/texmf-dist
...
running fmtutil-sys --byhyphen "/usr/local/texlive/2022/texmf-var/tex/generic/config/language.dat.lua" --no-error-if-no-engine=luajithbtex,luajittex,mfluajit --status-file=/tmp/LTvdge0FWk/deFZm0cUtU ...
tlmgr: An error has occurred. See above messages. Exiting.
tlmgr: package log updated: /usr/local/texlive/2022/texmf-var/web2c/tlmgr.log
tlmgr: command log updated: /usr/local/texlive/2022/texmf-var/web2c/tlmgr-commands.log
The command '/bin/sh -c tlmgr update --self && tlmgr install scheme-full' returned a non-zero code: 2

错误提示要求查看上方输出,但无法找到更多有效诊断信息。

解决方案

1. 锁定镜像版本

latest-minimal标签会随时间更新,新版本可能引入兼容性问题。改用之前成功构建的特定版本镜像:

FROM texlive/texlive:76d39535e480  # 直接使用原注释中的哈希值
RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get upgrade -y && rm -rf /var/lib/apt/lists/*

RUN tlmgr update --self && tlmgr install scheme-full

2. 跳过自动构建步骤(临时 workaround)

若必须使用最新镜像,可通过修改tlmgr配置跳过导致失败的自动生成步骤,再手动执行必要操作:

FROM texlive/texlive:latest-minimal
RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get upgrade -y && rm -rf /var/lib/apt/lists/*

# 关闭tlmgr自动构建,跳过mtxrun生成环节
RUN tlmgr update --self && tlmgr options autobuild 0 && tlmgr install scheme-full
# 手动执行后续必要的索引和格式生成
RUN mktexlsr && updmap-sys && fmtutil-sys --all

3. 增加容器资源分配

mtxrun --generate失败可能是容器内存不足导致进程被强制终止,构建时增加内存限制:

docker build --memory=4g .

原因分析

  • 最新texlive/texlive:latest-minimal镜像中的tlmgr版本或依赖库更新,引发mtxrun --generate执行异常。
  • 容器内存不足时,mtxrun进程会被系统终止,返回状态码-1进而导致构建失败。

内容的提问来源于stack exchange,提问作者obfish

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 18:50:32