TeX Live 的安装和升级有问题

TeX Live 的安装和升级有问题

如果您已经像这样手动安装了最新的 TeX Live(以root用户身份安装):

wget https://mirror.ctan.org/systems/texlive/tlnet/install-tl-unx.tar.gz
tar -xvzf install-tl-unx.tar.gz
cd install-tl-*
perl ./install-tl

尝试更新时您可能会遇到错误。

运行tlmgr update --all(作为非root用户),出现错误cannot write to directory

使用root(或sudo tlmgr update --all),误差的形式为

tlmgr: Local TeX Live (2020) is older than remote repository (2022). Cross release updates are only supported with
update-tlmgr-latest(.sh/.exe) --update See https://tug.org/texlive/upgrade.html for details.

或者bash: tlmgr: command not found

您如何解决这些问题?

你应该update-tlmgr-latest从上面来运行这个东西吗?

答案1

作为普通用户,您不应该能够写入 TeX Live 的系统范围安装,因此出现该错误是好事也是正确的。您应该使用特定的系统用户(例如texlive),或超级用户root。使用sudo运行它与使用 相同root,并且可以正常工作(但如果您在初始安装时使用了系统用户,则应该只使用该用户,而不是root)。

如果tlmgr没有找到,则需要将tlmgr可执行文件的路径添加到root的路径中:

运行sudo su - ; nano ~/.bashrc(假设您使用bash作为您的 shell)。添加类似于以下内容的一行,然后保存并退出。

export PATH=/usr/local/texlive/2022/bin/linux-x86_64/:${PATH}

如果您得到了cross version error,则解决方法是相同的:将正确的路径添加到 路径的前面root,它就会选择那个。

但是为什么有一个你没有安装的版本?

通常,它将是软件包管理器安装的版本,以满足您已安装的某些东西的依赖关系。这可能是像具有 TeX 模式的编辑器一样简单的东西(编辑器Kile符合此描述)。

旧的 TeX Live 可以被删除吗?

可能吧。但不要使用rm它来删除它。那样做会造成比解决的问题更多的问题。使用包管理器,这就是它的用途。不过,它可能会尝试删除一些你想要的东西,所以要注意将被删除的东西的列表。

如果你使用的是 Debian Linux,那么有一些非常好的指示说服你的包管理器 ( aptappersynaptic) 你安装了 TeX Live,这样它就不会再尝试安装过时的版本。你也许能够说服基于 RedHat 的发行版上的 RPM ( yumdnf),但确切的过程是不同的,并且该链接未涵盖。有人在unix&linux.SE也许能够帮助您,但这超出了本网站的范围。

更新版本(例如从 2022 年到 2023 年):

上面的错误之一指定了正在运行update-tlmgr-latest(.sh/.exe) --update。如果您复制该命令并运行它,它将不起作用。如果您使用的是 Windows,则可以使用update-tlmgr-latest.exe --update,它应该可以工作。如果您使用的是 Linux,请使用update-tlmgr-latest.sh --update。错误不是特别清楚,但它也假设您对各种系统的文件扩展名和可执行格式有一定的了解。我没有任何更好的错误消息建议,以防任何可以修复它的人正在阅读此内容。

就我个人而言,我不会使用 来更新版本update-tlmgr-latest。相反,我会安装一个新版本,要么保留现有版本,要么在新版本适用于我的文档后将其删除。

使用系统用户安装:

上面提到了使用系统用户,而不是root安装 TeX Live 系统。操作方法如下:

使用root或,使用以下命令(或基本类似的命令)sudo创建一个名为的新系统用户:texlive

useradd -d /usr/local/texlive -m -r texlive
passwd -l texlive

这将创建一个系统用户 ( -r),其主目录为/usr/local/texlive( -d /usr/local/texlive -m),并锁定密码(因此没有密码可以登录该帐户)。使用sudo su - texlive更改为用户texlive,然后按照问题中列出的方法运行安装。

这样做的主要原因是责任分离。用户texlive只负责 TeX Live 安装的管理。它不能用于任何其他系统管理,并且哪些文件属于 TeX Live 安装的一部分非常明确(它们归texlive,而不是root)。

高级主题-多个版本的 TeX Live 协同工作:

(自动版本在 Linux 上有效,在 Mac 上可能有效也可能无效,在 Windows 上无效)

好消息!可以安装多个不同版本的 Tex Live,而不会互相干扰。将每个版本安装在单独的目录中,例如/usr/local/texlive/<year>/

若要在版本之间进行选择,您可以手动更改PATH变量,也可以让计算机自动为您执行此操作。要让计算机执行此操作,您可以使用软件包environment-modules以及类似以下的模块文件(为您安装的每个 TeX Live 版本创建一个):

#%Module1.0#######################################################################
#
#
module-whatis   "Loads settings for the TeXLive 2023"
prepend-path    PATH            /usr/local/tex/texlive/2023/bin/x86_64-linux
prepend-path    MANPATH         /usr/local/tex/texlive/2023/texmf/doc/man
prepend-path    INFOPATH        /usr/local/tex/texlive/2023/texmf/doc/info

如果每个版本都有一个这样的模块文件,则可以使用 轻松选择一个版本module load texlive/2023,然后使用 恢复为默认值module remove texlive/2023。同样,有关以这种方式使用模块文件的具体帮助,unix&linux.SE是一个寻求帮助的好地方(当然,在查看手册页之后)。

相关内容