自制 ShareLaTeX 镜像
Overleaf 官方的 sharelatex/sharelatex 镜像的 TeX Live 版本更新不及时,导致我们想安装宏包的时候会由于 TeX Live 版本过旧而安装失败。我们可以在官方镜像的基础上更新 TeX Live 的版本打一个自己的镜像。下面是自制镜像的过程。
⚠️: 自制镜像的时间可能会很长
编译镜像
编辑 Dockerfile
新建一个 Dockerfile:
FROM sharelatex/sharelatex:5.0.3
# 删除旧版本
RUN /usr/local/texlive/2023/bin/x86_64-linux/tlmgr uninstall --all --force
# 安装新版本
RUN cd /tmp && \
wget https://mirror.ctan.org/systems/texlive/tlnet/install-tl-unx.tar.gz && \
zcat < install-tl-unx.tar.gz | tar xf - && \
cd install-tl-* && \
perl ./install-tl --no-interaction
# 安装依赖
RUN apt-get update && apt-get install -y \
inkscape \
python3-pygments
ENTRYPOINT ["/sbin/my_init"]
如果需要使用镜像源安装,将上面文件中的:
perl ./install-tl --no-interaction
替换为:
# 使用中科大镜像源
perl ./install-tl --no-interaction --location https://mirrors.ustc.edu.cn/CTAN/systems/texlive/tlnet
编译
docker build --tag xxx/sharelatex:5.0.3 --progress=plain . 2>&1 | tee build.log
将
xxx替换为你喜欢的名字,将版本号5.0.3替换成你的基础镜像版本号。
修改脚本
编辑 lib/docker-compose.base.yml,在 environment 对象中加入 PATH:
environment:
PATH: /usr/local/texlive/2024/bin/x86_64-linux:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
...
启动 ShareLaTeX
ShareLaTeX 的启动脚本检测环境变量 OVERLEAF_IMAGE_NAME 来确定要使用的 ShareLaTeX 镜像。因此以后启动 ShareLaTeX 时需要将 OVERLEAF_IMAGE_NAME 设为你编译的镜像:
OVERLEAF_IMAGE_NAME=xxx/sharelatex bin/start