如果您已经像这样手动安装了最新的 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,那么有一些非常好的指示说服你的包管理器 ( apt
、apper
、synaptic
) 你安装了 TeX Live,这样它就不会再尝试安装过时的版本。你也许能够说服基于 RedHat 的发行版上的 RPM ( yum
、dnf
),但确切的过程是不同的,并且该链接未涵盖。有人在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是一个寻求帮助的好地方(当然,在查看手册页之后)。