编辑:@cfr 询问它在多用户场景中如何工作

编辑:@cfr 询问它在多用户场景中如何工作

我正在为 CI 构建一个脚本来获取一个尽可能具有最少 Texlive 分布的 docker 镜像,我特别想避免texlive-full每次需要这个 docker 镜像时都拉取 5 Gb。

现在我认为这个脚本

  1. 安装texlive-something
  2. tlmgr install latexmk
  3. tlmgr install texliveonfly
  4. texliveonfly -c latexmk -a "-pdf -f -synctex=0" myFile.tex(安装缺失的 tex 包并用 进行编译latexmk
  5. 部署结果并缓存图像中与 tex 相关的部分。

我应该选择哪个包才能texlive-something使这些步骤有效?提前致谢。

编辑

似乎这个词最小可能会引起一些混淆。在这种情况下,它的意思是(对于一个包)

  1. 有一组二进制文件(pdflatextlmgrbibtex/ biberperl,我可能遗漏了一些东西)可以让我编译一个空文档。如果我需要其他二进制文件,我可以手动添加这些依赖项

  2. 包含一组最小的 LaTeX 软件包,以便编译空文档。如果我理解正确的话,大多数其他软件包都可以处理texliveonfly(当然,除了一些深奥的情况,但也可以手动处理)。

换句话说,假设使用我提到的工具编译一个空文档,则总磁盘空间是最小的。

答案1

从 TUG 安装 texlive (https://www.tug.org/texlive/acquire-netinstall.html)你可以通过选择以下选项来获得一个 76 MB 的最小 Latex 安装:

  • 方案basic

在此处输入图片描述

  • 没有安装文档和源代码

在此处输入图片描述

答案2

我知道这是一篇相当老的文章,但如果你想构建一个带有完整 TeX Live 安装的 docker 镜像(来自 TUG 的 vanilla TeX Live),你可以将其大小减小到大约 1.72 GiB,而不是 5 GiB,这完全可以接受,具体取决于你的需求。但是,这只是最小化了镜像大小,并且不会进行即时安装,因为它包含所有软件包。

好的,那么它是如何工作的呢?TeX Live 安装程序为您提供了不安装文档和源文件的选项,这会导致 TeX 树仅包含编译相关的文件。我非常怀疑您会在 docker 镜像中查找文档文件。

让我们从选择镜像开始。不幸的是,您这次不能使用 Alpine,因为 TeX Live 没有为 Linux/MUSL 提供某些二进制文件,例如 biber。所以我们只能求助于 Debian。

此外,根据您要使用的工具,您需要在开始之前安装一些依赖项:

  • 用于 arara 等工具的 JDK
  • xindy 的 libncurses
  • 一些用于 biber 和其他 perl 工具的 perl 库
  • 用于 minted 的 python-pygments

毕竟这些并不“昂贵”。最后但并非最不重要的是,您可以使用自定义配置文件安装 vanilla TeX Live:

selected_scheme scheme-full
tlpdbopt_install_docfiles 0
tlpdbopt_install_srcfiles 0
tlpdbopt_autobackup 0
tlpdbopt_sys_bin /usr/bin

这意味着您需要所有软件包(scheme-full),但不需要任何文档和源文件,只需要软件包。最后一条指令只是说我们希望符号链接位于 /usr/bin 中,这样我们就不必关心 PATH 操作。

安装后,您可以调用tlmgr path add,并将二进制文件符号链接到您的 PATH。然后您就可以开始了。

完整 Dockerfile(部分基于sumankhanal/texlive-2018):

FROM debian:sid

ENV TEXLIVE_INSTALL_NO_CONTEXT_CACHE=1 \ 
    NOPERLDOC=1

RUN apt-get update && \ 
  apt-get install -y wget unzip tar \ 
  make fontconfig perl openjdk-8-jre libgetopt-long-descriptive-perl \
  libdigest-perl-md5-perl libncurses5 \ 
  python3-pygments && \ 
  rm -rf /var/lib/apt/lists/*

RUN wget http://mirror.ctan.org/systems/texlive/tlnet/install-tl-unx.tar.gz && \ 
  tar xzf install-tl-unx.tar.gz && rm install-tl-unx.tar.gz && \ 
  cd install-tl* && \ 
  echo "selected_scheme scheme-full" > install.profile && \ 
  echo "tlpdbopt_install_docfiles 0" >> install.profile && \ 
  echo "tlpdbopt_install_srcfiles 0" >> install.profile && \
  echo "tlpdbopt_autobackup 0" >> install.profile && \ 
  echo "tlpdbopt_sys_bin /usr/bin" >> install.profile && \
  ./install-tl -profile install.profile && cd .. && rm -rf install-tl*

RUN /usr/local/texlive/2018/bin/x86_64-linux/tlmgr path add

答案3

我用TinyTeX,它是为R但对于其他用途来说效果很好。

管理还是通过命令行使用 tlmgr 进行,配置文件很容易理解和调整:

TinyTeX 是基于 TeX Live 的定制(可能带有主观性)LaTeX 发行版,体积小但在大多数情况下仍能正常运行。即使您遇到缺少 LaTeX 软件包的问题,​​您也应该非常清楚需要做什么。您只需安装您真正需要的 LaTeX 软件包。手册最多只有两页。

请注意,TinyTeX 假设您不害怕使用命令行...事实上,您只需要知道一个命令:tlmgr。它可能并不太可怕。

TinyTeX 仅提供安装脚本,可通过网络下载并安装 TeX Live。这可能需要几分钟,具体取决于您的网络速度...

对于 Linux 用户,TinyTeX 将安装到 $HOME/.TinyTeX,并且在 $HOME/bin 下创建可执行文件(例如 pdflatex)的符号链接,该符号链接应位于 PATH 环境变量上:

wget -qO- \  
"https://github.com/yihui/tinytex/raw/master/tools/install-unx.sh" |
sh

...

要卸载 TinyTeX,只需从文件管理器/浏览器中删除该文件夹,或使用命令行:

# Linux tlmgr path remove 
rm -r "~/.TinyTeX"

将卸载 TinyTeX 的方法与卸载其他 LaTeX > 发行版的方法进行比较,您可能会发现卸载 TinyTeX 比卸载其他 LaTeX 发行版要简单得多。这是因为 TinyTeX 只是一个独立的文件夹。

编辑:@cfr 询问它在多用户场景中如何工作

有三个选项,简单的“每个人都使用它,但只有 root 安装新闻包”,复杂的“创建一个 tinytex 用户组并对其进行 chmod”和合理的“每个用户都可以有自己的本地包树”。官方常问问题形容它:

1-下载并准备一个无需root的完全可移植的发行版:

wget -qO- \
  "https://github.com/yihui/tinytex/raw/master/tools/install-unx.sh" | \
  sh -s - --admin --no-path

2 - 以 root 身份设置符号链接和权限

sudo ~/.TinyTeX/bin/*/tlmgr path add
chown -R root:staff ~/.TinyTeX
chmod -R g+w ~/.TinyTeX
chmod -R g+wx ~/.TinyTeX/bin

3 – 每个用户初始化自己的包树

tlmgr init-usertree

4 - 用户tlmgr使用--usermode开关安装所需的任何软件包

tlmgr --usermode install koma-script xcolor

经过几分钟的思考后,根据特定的系统管理场景调整这些命令应该很容易。

常见问题解答中的第 9 个问题和第 16 个问题分别涉及基于 Debian 的包管理器\repos\PPA 和 macOS,也值得一读。

第二次编辑:刚刚注意到 TinyTeX 的痛苦大厅……

至少包括三次对“TeXlive 对于 Docker 容器来说太大,MikTeX 对于生活来说太深奥”情况的引用:https://yihui.name/tinytex/pain/

提及文件大小的评价:

从我的系统 (openSUSE) 中删除了 TeX Live:1.5gb。安装了 TinyTeX + 依赖项来编译我的论文:150mb!!!!太棒了!— 布鲁诺·罗德里格斯

答案4

我用

  1. texlive-lang-希腊语
  2. texlive-xetex
  3. texlive-latex-extra
  4. texlive-fonts-extra 和
  5. texlive-math-extra

如果需要,您可以将语言替换为英语+更多,

如果你不使用 XeLaTeX,你可以避免使用 xetex 和 fonts-extra

但我发现其他方法确实很有用,可以让他们“退出游戏”

附言:另外我认为你的问题是基于观点的,可能会被关闭

相关内容