有什么推荐的方法可以保护 TeX Live 文件免受无变化更新的影响,或者在更新时自动修补它?

有什么推荐的方法可以保护 TeX Live 文件免受无变化更新的影响,或者在更新时自动修补它?

许多软件包管理器允许用户阻止某些软件包被更新。这通常称为“固定”。固定的软件包受到保护,不会自动更新。例如,如果软件包中的错误在特定系统上存在问题,并且在本地进行修改或降级直到上游修复,这很有用。由于软件包可能在修复之前获得其他更新,因此阻止更新可以保护固定的版本,直到有包含相关修复的较新版本可用。

tlmgr支持“固定”功能,但它将包固定到存储库,而不是保护其免受更新本身

就目前情况而言,texdef.pl需要修补才能与当前的 perl 配合使用。没有任何证据表明这个问题可能在可预见的未来得到修复。因此,我无限期地需要一个修补版本。

[详细信息和补丁:尝试使用 texdef 时,如何避免此正则表达式错误?]

但是,每次我更新 TeX Live 时,我的修补版本都会被原始版本覆盖,即使原始版本没有任何变化。也就是说,并不是分发的版本已更新,而是遗憾的是没有包含我需要的修复。它根本没有改变。但tlmgr坚持用 TeX Live 的损坏版本替换我的工作版本,即使该版本有错误且较旧。

对此我可以做很多事情。例如,我可以更改权限,使其需要 root 权限才能覆盖修补后的版本。这可以工作,但我怀疑它会导致tlmgr退出并对其世界状态发出四个字母的抱怨。

如果文件是.sty或类似文件,我可以在 TEXMFLOCAL 或 TEXMFHOME 中安装修补版本。不幸的是,它是一个脚本,符号链接自二进制目录,因此kpsewhich无法用于访问它,我无法通过这种方式解决它。

我可以使用各种其他技巧,包括 shell 别名等,但这相当复杂且相对脆弱。此外,随着更多用户获得当前版本的 perl,遇到此问题的用户数量将会增加。因此,如果有更“官方”和更强大的解决方案就好了。

是否可以使用“固定”包或文件,tlmgr以便在更新时不会被覆盖?理想情况下,它会在控制台上打印一条提醒,提醒它已被跳过,但这只是锦上添花,我在这里最关心的是蛋糕。

如果不是,最好的解决方法是什么?当这个该死的文件与我上次更新时修复的错误版本完全相同时,不得不不断修补这个该死的文件真是令人恼火……还有上次……还有上次……

我想我可以为它创建一个本地的单包存储库。但是,这似乎是一种非常尴尬的方式来实现一个肯定非常简单的目标。

答案1

正如所提到的nobert 的评论,现在可以通过将包添加到逗号分隔的列表中来“固定”包

update-exclude = \
<package1-name>,\
<package2-name>,\
... etc.

texmf.cnf

相关内容