我在 Debian 11 上安装了 TeX Live 2022
cd /tmp # working directory of your choice
wget https://mirror.ctan.org/systems/texlive/tlnet/install-tl-unx.tar.gz # or curl instead of wget
zcat install-tl-unx.tar.gz | tar xf -
cd install-tl-*
perl ./install-tl --no-interaction # as root or with writable destination
Finally, prepend /usr/local/texlive/YYYY/bin/PLATFORM to your PATH,
e.g., /usr/local/texlive/2022/bin/x86_64-linux
现在我需要更新软件包并安装我尚未安装的新软件包,因此我输入:
tlmgr update --all
看看
tlmgr:本地 TeX Live (2020) 比远程存储库 (2022) 旧。仅使用update-tlmgr-latest(.sh/.exe) --update 支持跨版本更新。请参阅https://tug.org/texlive/upgrade.html了解详情。
这很奇怪,因为我的 Debian 11 上没有 TeX Live (2020)。然后我尝试:
update-tlmgr-latest(.sh/.exe) --update
有一个错误:
bash:意外标记“.sh/.exe”附近有语法错误
我该如何修复这个问题?
答案1
关于 bash 的语法错误:圆括号/圆括号显示您可以使用的选项,不应直接输入。如果您使用的是 Windows,请使用update-tlmgr-latest.exe --update
,如果您使用的是 Linux 或类似系统(您使用的是 Debian,所以您使用的是 Linux),请使用update-tlmgr-latest.sh --update
。在执行此操作之前,请先阅读以下内容,因为您收到的错误表明存在某种问题。
假设您已经在 Debian 上安装了 TeX Live,您可能会遇到安装了两个版本的 TeX Live 的问题:一个是您安装的 TeX Live 2022,另一个是使用 Debian 包管理器作为某些东西的依赖项安装的(由于 Debian 打包软件的方式,这个版本可能比较旧)。因此,输入tlmgr
可能会调用错误的版本(Debian 安装的版本,似乎是 TeX Live 2020)。
有关于 TeX Live 与 Debian 集成的说明,请访问TUG 网站,但是如果您已经通过 Debian 的包管理器安装了 TL,您可能无法很好地清理它(我没有足够的从 Debian 中删除包的经验来描述您可能遇到的任何后果)。
但是,对于您的问题,请尝试locate tlmgr
查看是否存在多个。如果是这样,请使用 2022 版本的完整路径来更新该安装。Teddy van Jerry 的评论建议使用which tlmgr
,如果您只是键入而不输入路径,它将指向运行的版本tlmgr
,因此这也可能为您提供有关您遇到问题的原因的信息。
摘自以下评论:
tlmgr
指的是/usr/bin/tlmgr
,它是 的符号链接../share/texlive/texmf-dist/scripts/texlive/tlmgr.pl
。这意味着 Debian 的包管理器安装了一个 TeX Live 发行版。
无需手动删除它,甚至无需删除软件包,只需更改PATH
用户的环境变量即可解决问题。通过将 (手动安装的) TeX Live 2022 bin 目录的路径放在路径的开头,整个系统应该可以正常工作。我不确定你在哪里安装了 TeX Live 2022,但如果你将它安装在 中/usr/local/texlive/2022
,请将其添加/usr/local/texlive/2022/bin/x86_64-linux
到你的PATH
变量中。
要为您的用户更新PATH
,请编辑用户.bashrc
文件以在底部附近添加如下行:PATH=/usr/local/texlive/2022/bin/x86_64-linux:${PATH}
并保存文件。启动新 shell,然后运行which tlmgr
- 它应该打印出/usr/local/texlive/2022/bin/x86_64-linux/tlmgr
(不是/usr/bin/tlmgr
)。如果是这样,然后您可以使用tlmgr update --all
升级。确保在编辑文件时使用您安装的 TeX Live 的路径,无论它在哪里。如果您使用更新,.bashrc
您可能还需要对文件执行此操作root
。.bashrc
sudo tlmgr
答案2
这是专门针对 MacOS 的答案。但解决方案 2 可能也适用于其他操作系统。请注意,在 MacOS 上,TeX Live 通常通过MacTeX 发行版,但本质上是同一件事。
当尝试更新软件包(或包管理器本身)时,我收到了 OP 问题中提到的错误消息:
sudo tlmgr update --self
# ...
# tlmgr: Local TeX Live (2022) is older than remote repository (2023).
# Cross release updates are only supported with
# update-tlmgr-latest(.sh/.exe) --update
# See https://tug.org/texlive/upgrade.html for details.
解决方案 1:要解决此问题没有升级整个 TeX Live 发行版(例如从 2022 升级到 2023),以下操作对我有用:
- 打开 TeX Live 实用程序。它与 TeX Live 一起发布,通常位于 /Applications/TeX/ 下
- 在操作下,选择重新安装 TeX Live Manager。
解决方案 2:如“灾难恢复”一节所述tlmgr 文档,建议使用update-tlmgr-latest.sh
。该脚本可在此网站上找到。我自己还没有测试过这个解决方案,但我怀疑这就是 Tex Live Manager 最终用来修复解决方案 1 中的问题的方法。