最近我收到一封来自 CRAN 的邮件,我从邮件中得知了一起TinyTeX相关的事故。 CRAN 要求我进行更改以避免将来发生此类事故,我想提一下这个更改,并在这篇文章中宣布另一个即将发生的更改。
防止意外安装 TinyTeX
为方便起见,R 函数tinytex::install_tinytex()
在安装 TinyTeX 之前不会要求用户确认。我假设用户在调用这个函数时知道他们在做什么,就像调用install.packages()
会在没有确认的情况下安装 R 包一样。我从一开始就知道这可能会出现问题,因为用户可能会无意中调用此函数,并且没有直接的方法来阻止安装。
我已经享受了四年多的平静……直到有人在他/她的包中的某个地方调用了这个函数(可能是无意的,因为这绝对违反了 CRAN 的政策),它在 CRAN 的机器上安装了 TinyTeX。多么恐怖的故事!
在 R 包tinytex的下一个版本中, install_tinytex()
将在以下两种情况下阻止自动安装:
- 环境变量
TINYTEX_PREVENT_INSTALL
设置为true
。这为系统管理员提供了一种完全禁用安装的方法,而install_tinytex()
只会抛出错误。 - 检测到另一个 LaTeX 分布。在这种情况下,如果 R 会话是
interactive()
,则会询问用户是否仍要继续安装;如果 R 会话不是交互式的,install_tinytex()
将抛出一个错误,告诉用户如果他们确定要安装 TinyTeX,他们可以使用tinytex::install_tinytex(force = TRUE)
。
我想这个改变应该不会影响太多人,但它会影响在非交互式 R 会话中通过install_tinytex()
安装 TinyTeX 的现有用户(例如,通过命令Rscript -e 'tinytex::install_tinytex()
)系统中已经存在 LaTeX 发行版。您必须使用参数force = TRUE
。这可能是一个小小的不便,但好处是应该少得多像我上面提到的那样的事故。
如果您想检查此更改是否影响您,您可以现在安装tinytex的开发版本:
remotes::install_github('yihui/tinytex')
看看tinytex::install_tinytex()
会发生什么。
如果您对此更改有任何反馈,请随时告诉我。目前,我计划下周将新版本提交给 CRAN。
迁移到 Github 上的 rstudio 组织
我们计划在下周(2022 年 5 月 16 日)将两个 Github 存储库https://github.com/yihui/tinytex和https://github.com/yihui/tinytex-releases迁移到rstudio
组织。也就是说,它们将分别变为https://github.com/rstudio/tinytex
和https://github.com/rstudio/tinytex-releases
。我们希望将这两个存储库从我的个人帐户迁移到rstudio
,以便更安全地构建和安装 TinyTeX,并且也更容易管理对这个项目的未来贡献。
理论上,这不会影响任何人,因为 Github 会自动将旧链接重定向到新链接,包括指向 Github Releases 中预编译的 TinyTeX 二进制文件的链接。无论如何,我想提前宣布这一点,以便您可以更好地做好准备。如果您在下周安装 TinyTeX 时遇到任何问题,请帮我们一个忙,立即提交报告。谢谢!