我全新安装了 Ubuntu 20.04 和 LaTeX(通过软件包texlive
、texlive-latex-extra
和texlive-lang-english
),但无法运行tlmgr
。我做了以下操作:
$ tlmgr install dirtree
(running on Debian, switching to user mode!)
/usr/bin/tlmgr: unexpected return value from verify_checksum: -5
为此,我在其他帖子中发现他们的密钥最近已过期:tlmgr:verify_checksum 的意外返回值:主存储库为 -5. 因此接下来:
$ tlmgr install dirtree --verify-repo=none
(running on Debian, switching to user mode!)
tlmgr: Local TeX Live (2019) is older than remote repository (2020).
Cross release updates are only supported with
update-tlmgr-latest(.sh/.exe) --update
See https://tug.org/texlive/upgrade.html for details.
好的。下载并运行update-tlmgr-latest.sh
从下载并运行脚本http://mirror.ctan.org/systems/texlive/tlnet/update-tlmgr-latest.sh并得到(顺便说一下,该--update
选项无法被识别):
$ sh update-tlmgr-latest.sh
Verifying archive integrity... All good.
Uncompressing TeX Live Manager Updater 100%
./runme.sh: Cannot find TeX Live root using kpsewhich --var-value=SELFAUTOPARENT.
./runme.sh: (no tlpkg/texlive.tlpdb and/or tlpkg/tlpobj/.)
./runme.sh: Please set your PATH as needed, otherwise it's hopeless.
我也是无奈啊,什么叫按需啊?
答案1
我遇到了同样的问题并通过重新安装 TexLive 解决了。
首先,您应该卸载所有现有的 TexLive 安装:
sudo apt-get remove texlive*
rm -rf /usr/local/texlive/20*
rm -rf ~/.texlive20*
接下来,您必须为新的 TexLive 发行版创建一个存放位置,并授予您的用户该目录的所有权
sudo mkdir -p /usr/local/texlive/$(date +%Y)
sudo chown -R "$USER" /usr/local/texlive
下载并手动安装 TexLive
mkdir /tmp/texlive
cd /tmp/texlive
wget http://mirror.ctan.org/systems/texlive/tlnet/install-tl.zip
unzip ./install-tl.zip -d install-tl
cd install-tl/install-tl-$(date +%Y%m%d)
perl ./install-tl
当你进入 perl 控制台时按“i”进行安装
Enter command: i
安装后:您需要添加到路径环境(根据您的安装更改年份)
export MANPATH="$MANPATH:/usr/local/texlive/2022/texmf-dist/doc/man"
export INFOPATH="$INFOPATH:/usr/local/texlive/2022/texmf-dist/doc/info"
export PATH=/usr/local/texlive/2022/bin/x86_64-linux:$PATH
测试安装
latex small2e
如果一切正确,请不要忘记删除安装目录。
rm -rf /tmp/texlive
答案2
简短的解决方案是:此错误是因为您的 TexLive 2019 正在尝试使用 TexLive 2020 ftp 存储库。您应该更改为正确(正确的)存储库。在终端中输入以下命令:
tlmgr repository add ftp://ftp.math.utah.edu/pub/tex/historic/systems/texlive/2019/tlnet-final
tlmgr repository list
tlmgr repository remove http://mirror.ctan.org/systems/texlive/tlnet
tlmgr option repository ftp://ftp.math.utah.edu/pub/tex/historic/systems/texlive/2019/tlnet-final
之后,您可以使用以下命令安装该包:
tlmgr --verify-repo=none install dirtree
我添加了--verify-repo
参数以避免出现此错误:tlmgr: unexpected return value from verify_checksum: -5 for main repository
第二个错误之前已在此处解释过:tlmgr:verify_checksum 的意外返回值:主存储库为 -5
答案3
我最近遇到了同样的问题,您需要通过转到 .bashrc 运行来正确编辑路径:
gedit /home/<username>/.bashrc
并在.bashrc文件中设置:
export PATH=/usr/local/texlive/2020/bin/x86_64-linux:$PATH
export MANPATH=/usr/local/texlive/2020/texmf-dist/doc/man:$MANPATH
export INFOPATH=/usr/local/texlive/2020/texmf-dist/doc/info:$INFOPATH
(也许您需要检查您的安装文件夹,如果它是默认的,那么您可以使用这些代码)。最初我只有这个(仅用于检查,不要使用它):
export PATH=:$PATH/usr/local/texlive/2020/bin/x86_64-linux
export MANPATH=/usr/local/texlive/2020/texmf-dist/doc/man
export INFOPATH=/usr/local/texlive/2020/texmf-dist/doc/info
当你修正了 PATH 后,重新运行 sh,你会得到以下结果:
sh update-tlmgr-latest.sh -- --upgrade
Verifying archive integrity... All good.
Uncompressing TeX Live Manager Updater 100%
./runme.sh: updating in /usr/local/texlive/2020...
./runme.sh: tlmgr version says this is TeX Live 2020,
./runme.sh: and this updater script created: Wed Jun 3 00:11:12 CEST 2020.
./runme.sh: have TL 2020, new version also 2020;
./runme.sh: using --upgrade doesn't make sense; terminating.
(./runme.sh: makeself creation date = Wed Jun 3 00:11:12 CEST 2020.)
最后更新您的 tlmgr。
编辑 这些步骤不能解决安装软件包的问题(至少对我来说)。我想给出更多步骤,以便最终可以安装或使用您的 tlmgr,我尝试使用 tlmgr 更新,我得到了:
You don't have permission to change the installation in any way,
specifically, the directory /usr/local/texlive/2020/tlpkg/ is not writable.
Please run this program as administrator, or contact your local admin.
tlmgr: An error has occurred. See above messages. Exiting.
为了解决这个问题,您需要安装以下程序:
sudo env PATH="$PATH" tlmgr install <package> --dry-run
参考:最后一条评论从 tlmgr 安装包时出现权限问题
如果需要,可以使用以下命令更新 tlmgr:
sudo env PATH="$PATH" tlmgr update --self
或者如果您想更新所有安装,请尝试:
sudo env PATH="$PATH" tlmgr update --self --all