在虚拟机上搭建 overleaf
概述¶
因为学校的 overleaf 无法通过 latex 代码定位到 pdf 位置。因此想在本地搭建一个 latex 环境,而如果在 windows 里安装 texlive+ 配置 VS code 比较麻烦,且以后重装系统又无法保留,因此考虑在 ubuntu 虚拟机里安装。
这里考虑同样搭建一个 overleaf,毕竟在主机里打开浏览器直接就能用就很方便,且界面也更美观。
overleaf 采用了 docker 进行部署,因此需要先安装 docker。
更新
在 virtualbox 虚拟机搭建后发现存在性能问题。以编译计组指导书为例,每次修改编译需要 1 分钟,并且经常出现编译 2-3 分钟然后失败的情况。
在查阅 wsl 性能比较后,发现 wsl2 的性能已经比较好了,有些场合接近原生 linux 的性能。参考Windows 10 May 2020 Performance For WSL vs. WSL2
于是补充了在 wsl2 上搭建的内容。
docker 安装¶
-
安装 docker
使用 sh 脚本一键安装,参考DaoCloud
非 root 用户还需要添加到 docker 组
```bash
sudo usermod -aG docker your-user ```
-
安装 docker compose
使用 sh 脚本一键安装,参考DaoCloud
-
docker 镜像加速
overleaf 安装¶
参考overleaf:toolkit,主要是使用了 docker compose 自动安装管理多个容器。
overleaf 安装 package¶
刚安装好的 overleaf 缺少了 ctex 等很多包,直接编译计组指导书会提示缺少**.sty 文件,所以需要手动安装包。
overleaf 底层的 tex 编译器采用的是 texlive 发行版,采用 tlmgr 管理包。
-
查看 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 应用,另外两个为数据库。
-
进入 sharelatex 容器
-
使用 tlmgr 软件
可以通过
tlmgr install <package>
来安装各种包,但是效率太低(需要安装几十个包),因此采用一个特殊的包texliveonfly
来自动安装需要的包。参考[1] -
使用 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 中操作