跳转至

在虚拟机上搭建 overleaf

概述

因为学校的 overleaf 无法通过 latex 代码定位到 pdf 位置。因此想在本地搭建一个 latex 环境,而如果在 windows 里安装 texlive+ 配置 VS code 比较麻烦,且以后重装系统又无法保留,因此考虑在 ubuntu 虚拟机里安装。

这里考虑同样搭建一个 overleaf,毕竟在主机里打开浏览器直接就能用就很方便,且界面也更美观。


更新

在 virtualbox 虚拟机搭建后发现存在性能问题。以编译计组指导书为例,每次修改编译需要 1 分钟,并且经常出现编译 2-3 分钟然后失败的情况。

在查阅 wsl 性能比较后,发现 wsl2 的性能已经比较好了,有些场合接近原生 linux 的性能。参考Windows 10 May 2020 Performance For WSL vs. WSL2

于是补充了在 wsl2 上搭建的内容。

docker 安装 (outdated)

方法过时了,保留仅用于归档

overleaf 采用了 docker 进行部署,因此需要先安装 docker。

  1. 安装 docker

    使用 sh 脚本一键安装,参考DaoCloud

    非 root 用户还需要添加到 docker 组

    ```bash
    

    sudo usermod -aG docker your-user ```

  2. 安装 docker compose

    使用 sh 脚本一键安装,参考DaoCloud

  3. docker 镜像加速

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
 "registry-mirrors": ["https://<your-key>.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

参考阿里云容器镜像服务

overleaf 安装

参考overleaf:toolkit,主要是使用了 docker compose 自动安装管理多个容器。

overleaf 安装缺失的 package

刚安装好的 overleaf 缺少了 ctex 等很多包,直接编译计组指导书会提示缺少**.sty 文件,所以需要手动安装包。

overleaf 底层的 tex 编译器采用的是 texlive 发行版,采用 tlmgr 管理包。

  1. 查看 docker 容器

      ~ sudo docker ps 
    CONTAINER ID        IMAGE                         COMMAND                  CREATED             STATUS                    PORTS                NAMES
    046949b8197a        sharelatex/sharelatex:2.4.1   "/sbin/my_init"          21 hours ago        Up 12 minutes             0.0.0.0:80->80/tcp   sharelatex
    0076877c7906        mongo:3.6                     "docker-entrypoint.s…"   21 hours ago        Up 12 minutes (healthy)   27017/tcp            mongo
    755cc370c29b        redis:5.0                     "docker-entrypoint.s…"   21 hours ago        Up 12 minutes             6379/tcp             redis
    

    其中 sharelatex 为 overleaf 应用,另外两个为数据库。

  2. 进入 sharelatex 容器

  ~ sudo docker exec -it sharelatex /bin/bash
root@046949b8197a:/# 
  1. 使用 tlmgr 软件

    可以通过tlmgr install <package>来安装各种包,但是效率太低(需要安装几十个包),因此采用一个特殊的包texliveonfly来自动安装需要的包。参考[1]

    #更换 CTAN 源为清华源,帮助:https://mirrors.tuna.tsinghua.edu.cn/help/CTAN/
    tlmgr option repository https://mirrors.tuna.tsinghua.edu.cn/CTAN/systems/texlive/tlnet
    
    tlmgr update --self
    tlmgr install texliveonfly
    
  2. 使用 texliveonfly 自动安装包

    #找到 overleaf 中需要编译的 tex 文件
    root@046949b8197a:/# find /var -name elegantbook-cn.tex
    /var/lib/sharelatex/data/compiles/5f805cb6723b610077ad52ad-5f805b95723b610077ad52a4/elegantbook-cn.tex
    /var/lib/sharelatex/data/compiles/5f817d1ba9660e0077353294-5f805b95723b610077ad52a4/elegantbook-cn.tex
    
    # 切换到该目录后
    texliveonfly elegantbook-cn.tex #默认使用 pdflatex
    ... #省略输出
    texliveonfly elegantbook-cn.tex -c xelatex #指定使用 xelatex 编译器
    

使用 wsl2 搭建

安装 wsl2

参考[2]

安装 Docker Desktop

参考[3]

配置源

setting->docker engine,同样是编辑 daemon.json,在 registry-mirrors 中添加镜像源

安装 overleaf

过程同上,只是在 wsl 中操作

参考

  1. Auto Package download for TeXLive
  2. microsoft doc: wsl install
  3. docker doc: windows install docker