![将 vanilla TeX Live 2021 与 Debian 集成——哪些 Debian 软件包必须被删除,因为它们会被 vanilla TeX Live 安装替换?](https://linux22.com/image/437026/%E5%B0%86%20vanilla%20TeX%20Live%202021%20%E4%B8%8E%20Debian%20%E9%9B%86%E6%88%90%E2%80%94%E2%80%94%E5%93%AA%E4%BA%9B%20Debian%20%E8%BD%AF%E4%BB%B6%E5%8C%85%E5%BF%85%E9%A1%BB%E8%A2%AB%E5%88%A0%E9%99%A4%EF%BC%8C%E5%9B%A0%E4%B8%BA%E5%AE%83%E4%BB%AC%E4%BC%9A%E8%A2%AB%20vanilla%20TeX%20Live%20%E5%AE%89%E8%A3%85%E6%9B%BF%E6%8D%A2%EF%BC%9F.png)
我计划将 Vanilla TeX Live 2021 的完整安装与我的 Debian 平台集成。
在 TeX 用户组的网站上,我读到了关于将 vanilla TeX Live 与 Debian 集成的说明。
该说明的第 2 项指出:
确保仅安装 Debian TeX Live 软件包tex-通用,文本信息,也许现代。
该指令表示 — 当通过install-tl
— 安装 vanilla TeX Live 时,需要从 Debian 安装中删除一部分 Debian 软件包(如果存在),即组成 Debian TeX Live 软件包集但不属于软件包集 {tex-common, texinfo, lmodern} 的 Debian 软件包。
该指令的关键问题是:
问题 1:
我怎样才能通过 Debian 发行版找出哪些 Debian 软件包组成了 Debian TeX Live 软件包集?
这些说明的第 4 项是关于创建一个虚拟包,用于“告知”Debian 的包管理有关安装 vanilla TeX Live 后提供的包的信息。
这里有一个文件链接 debian-equivs-2021-ex.txt。
该文件的目的是提供控制文件的内容,通过该文件,equivs-tool 创建包文件/“虚拟”-.deb 文件,进而可以通过 dpkg 安装。
无论此文件的实际用途如何,您都可以在此文件中找到 vanilla TeX Live 2021 安装提供的软件包列表。
问题2:
检查 Debian 安装中列表中提到的软件包是否已安装,如果已安装,是否将其删除,这样就足够了吗?
(如果 Debian 自己的 TeX Live 打包包的名称不同,这似乎不够。但我不知道是否是这种情况。)
问题 3:
如果我希望同时安装多个版本的 TeX Live,例如 2020 和 2021,我应该如何处理虚拟软件包?每个版本都有相应的虚拟软件包链接https://www.tug.org/texlive/debian.html#vanilla提供相同的一组软件包,仅版本不同。
提到的文件 debian-equivs-2021-ex.txt 看起来像这样:
Section: misc
Priority: optional
Standards-Version: 4.1.4
Package: texlive-local
Version: 2021.99999999-1
Maintainer: you <[email protected]>
Provides: chktex, biblatex, biblatex-dw, cm-super, cm-super-minimal, context,
dvidvi, dvipng, feynmf, fragmaster, jadetex, lacheck, latex-beamer,
latex-cjk-all, latex-cjk-chinese, latex-cjk-chinese-arphic-bkai00mp,
latex-cjk-chinese-arphic-bsmi00lp, latex-cjk-chinese-arphic-gbsn00lp,
latex-cjk-chinese-arphic-gkai00mp, latex-cjk-common, latex-cjk-japanese,
latex-cjk-japanese-wadalab, latex-cjk-korean, latex-cjk-thai, latexdiff,
latexmk, latex-sanskrit, latex-xcolor, lcdf-typetools, lmodern, luatex,
musixtex, passivetex, pgf, preview-latex-style, prosper, ps2eps, psutils,
purifyeps, t1utils, tex4ht, tex4ht-common, tex-gyre, texlive, texlive-base,
texlive-bibtex-extra, texlive-binaries, texlive-common, texlive-extra-utils,
texlive-fonts-extra, texlive-fonts-extra-doc, texlive-fonts-recommended,
texlive-fonts-recommended-doc, texlive-font-utils, texlive-formats-extra,
texlive-games, texlive-generic-extra, texlive-generic-recommended,
texlive-humanities, texlive-humanities-doc, texlive-lang-african,
texlive-lang-all, texlive-lang-arabic, texlive-lang-cjk, texlive-lang-cyrillic,
texlive-lang-czechslovak, texlive-lang-english, texlive-lang-european,
texlive-lang-japanese, texlive-lang-chinese, texlive-lang-korean,
texlive-lang-french, texlive-lang-german, texlive-lang-greek,
texlive-lang-indic, texlive-lang-italian, texlive-lang-other,
texlive-lang-polish, texlive-lang-portuguese, texlive-lang-spanish,
texlive-latex-base, texlive-latex-base-doc, texlive-latex-extra,
texlive-latex-extra-doc, texlive-latex-recommended,
texlive-latex-recommended-doc, texlive-luatex, texlive-math-extra,
texlive-metapost, texlive-metapost-doc, texlive-music,
texlive-omega, texlive-pictures, texlive-pictures-doc, texlive-plain-extra,
texlive-plain-generic,
texlive-pstricks, texlive-pstricks-doc, texlive-publishers,
texlive-publishers-doc, texlive-science, texlive-science-doc, texlive-xetex,
thailatex, tipa, tipa-doc, xindy, xindy-rules, xmltex, asymptote, texinfo
Depends: freeglut3
Architecture: all
Description: My local installation of TeX Live 2021.
A full "vanilla" TeX Live 2021
https://www.tug.org/texlive/debian#vanilla
问题 4:
您可以在描述字段中找到 URL:
http://tug.org/texlive/debian#vanilla
难道不应该这样:
https://www.tug.org/texlive/debian.html#vanilla?
(“debian”后面的“.html”丢失。)
问题 5:
字段“Standards-Version: 4.1.4”表示控制文件符合 Debian 政策手册 4.1.4。<whatsoever>。(<whatsoever> 是发布号的一部分,在发生“表面”变化时会增加,例如,在纠正打字错误时。)
在网上我只能找到较新的Debian 政策手册版本 4.5.1.0,发布于 2020-11-17。
在哪里可以找到 4.5.1.0 之前的 Debian 政策手册版本,特别是 4.1.4 版本?
问题 6:
Debian 政策手册 4.5.1.0 版的“5.6.12. 版本”部分,表示在版本字段“Version: 2021.99999999-1”中,字符串“2021.99999999”表示来自 dummy-package 维护者的上游版本(字符串“-1”表示 debian 修订版)。
这Debian 软件包搜索发现常规 Debian-texlive 软件包的上游版本(来自 TeX Live 开发人员)似乎具有特定的模式。
例如,对于 Debian-buster(稳定版),软件包 texlive 的上游版本为“2018.20190227”(debian 修订版为“2”)。
这些上游版本号的模式是什么?
“2018”似乎表示年份。哪一年?
“20190227”似乎表示日期。哪一天?
“2018”表示 TeX Live 2018 吗?“20190227”是存储库与 CTAN 主服务器上的 TeX-Live 存储库同步/rsynced 以创建 Debian 软件包的日期吗?
问题 7:
为什么在“提供”字段中会找到“texinfo”和“lmodern”这两个软件包,尽管说明建议确保这些软件包已经安装?
它们(连同“tex-common”和“freeglut”)不应该列在“依赖”字段中吗?
在上述说明的第 2 项中建议您“确保安装的唯一 Debian TeX Live 软件包是 tex-common、texinfo 以及可能的 lmodern”。
问题 8:
“lmodern” 前面的“可能”是什么意思?
只有在不集成 TeX Live 发行版附带的 lmodern 字体的情况下,才应保留 Debian 的 lmodern 软件包?
问题 9:
广告确保“唯一安装的 Debian TeX Live 软件包是 tex-common、texinfo 和可能的 lmodern”:
不应该安装虚拟包吗前卸载任何 Debian 软件包?
否则,不属于 Debian TeX Live 但依赖于 (Debian) TeX Live 的 Debian 软件包也可能会遭到卸载。
(也许可以调整虚拟包的控制文件,通过“冲突:”和“替换:”指令删除任何已经存在的 Debian TeX Live 安装,如https://www.debian.org/doc/debian-policy/ch-relationships.html#overwriting-files-and-replacing-packages-replaces然后在运行之前安装虚拟包install-tl
...,这样就将确保“安装的 Debian TeX Live 软件包只有 tex-common、texinfo 和可能的 lmodern”的步骤与安装虚拟包的步骤结合起来了。
另一个想法是让虚拟包在安装时执行一个脚本,用于下载和安装完整的 TeX Live 并更改环境变量,在删除时执行一个脚本,用于执行命令sudo tlmgr remove --all
并撤消对环境变量的更改,但我还没有充分深入研究创建 Debian 软件包以实现此目的的过程——如果我开始做这件事,并且成功了,然后有人感兴趣,那么也许我可以回报。)
答案1
检查 Debian 安装中列表中提到的软件包是否足以安装,如果是,则将其删除?
从技术上来说,是的(见下文)。
我怎样才能通过 Debian 发行版找出哪些 Debian 软件包组成了 Debian TeX Live 软件包集?
你可能想要类似的东西apt rdepends texlive-full
或朋友......
但考虑到 Debian 打包程序和 TeXlive 人员之间似乎存在一些沟通甚至重叠,我建议给出的每个相应 equivs 文件的软件包和版本范围列表是详尽的。
如果我希望并行安装多个 vanilla TeX Live 版本(例如 2020 和 2021),我应该如何处理虚拟包?对于它们每个,dummy-package 提供相同的一组包,只有版本不同。
如果你想同时集成多个 TeXlive 版本,你必须创建一个 equivs 文件,其中包含超集其对应的两个包(和版本范围)。您想要的东西有些不寻常,因此您必须根据这些不寻常的要求调整提供的建议。
从技术上来说,简单地从安装中删除上述软件包并没有什么问题。但是,equivs 文件的理念主要涉及两个方面:
Provides:
描述你本地的 TeXlive 据称提供了哪些软件包Depends:
描述 TeXlive 需要安装哪些软件包
删除其中的内容Provides:
并安装其中的Depends:
内容技术上足够了。但是,通过安装创建的虚拟包,您可以让包管理器知道这个本地安装不在其控制范围内。
因此,好处是,将来安装 equivs 包后,你的包管理器将要更好地了解如何解决潜在冲突。手动执行这些步骤会使包管理器失去这种能力。
因此,总而言之:您可以手动安装(Depends:
项目)和删除(Provides:
项目)中声明的内容,如 equivs 文件中所述,但这并不适用于未来。在 Debian 上,使用 equivs 文件正是出于此目的,这是最佳实践。但没有人会因为您不遵循此最佳实践而逮捕您。
注意:您的另一个问题 2.) 似乎更像是缺陷报告,而不是问题。由于其中一个 URL 已失效,而另一个 URL 包含人们期望从(现在?)失效的 URL 中看到的内容,因此可以推断这只是疏忽。幸运的话,维护人员之一会读到并修复它。
对于我的系统,我甚至扩展了 equivs 文件以包含一些Depends:
我想从 LaTeX 中使用的字体包(在中),所以没有人阻止你修改模板 equivs 文件或合并为两个不同的 TeXlive 版本建议的 equivs 文件。
答案2
这里的答案实际上并不能回答您的所有问题。
就我个人而言,我会安装一个或多个原始版本的 TeXLive(在 中/usr/local/texlive
),然后修改(或创建)文件/etc/environment
以在其中定义 PATH,其中首先列出原始版本的 TeXLive 的命令:
PATH="/usr/local/texlive/2021/bin/x86_64-linux:..."
由于我的大多数计算机都不会出现磁盘空间不足的情况,因此我让 Debian/Ubuntu 安装其自己的软件包。
它更简单并且效果很好。