When I am trying to update TeX Live I receive an error. Why does this happen and what does the error mean?
$ tlmgr update --self --all
/usr/local/texlive/2019/bin/x86_64-linux/tlmgr: unexpected return value from verify_checksum: -5
TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. It only takes a minute to sign up.
Sign up to join this communityIn case the issue is not due to tlcontrib
, running update-tlmgr-latest.sh
solves the problem.
Kudos to Norbert Preining for the answer on the TeX Live list!
I record here the required steps for posterity.
In case you don't have it, retrieve the script:
wget https://mirror.ctan.org/systems/texlive/tlnet/update-tlmgr-latest.sh
Check if you can run kpsewhich
from sudo
:
sudo kpsewhich --var-value=SELFAUTOPARENT
If yes, go to the last step. If not, check that the TeXLive path is in your PATH
echo $PATH
If not, add it with
PATH="/path/to//texlive/:$PATH"
Finally, run the script (make it executable with chmod +x
)
sudo env PATH="$PATH" ./update-tlmgr-latest.sh
The env
option passes to sudo the PATH
already available to the user, without the need to change the PATH
of the root user.
The output should look like
Verifying archive integrity... All good.
Uncompressing TeX Live Manager Updater 100%
./runme.sh: updating in /usr/local/texlive/2019...
./runme.sh: tlmgr version says this is TeX Live 2019,
./runme.sh: and this updater script created: Mon Apr 6 15:37:42 CEST 2020.
./runme.sh: proceeding with tlmgr update.
./runme.sh: updating /usr/local/texlive/2019/bin/x86_64-linux ...
./runme.sh: /opt/texbin/tlmgr including objects: master/tlpkg/tlpobj/texlive.infra.tlpobj master/tlpkg/tlpobj/texlive.infra.x86_64-linux.tlpobj
D:appending to package log file: /usr/local/texlive/2019/texmf-var/web2c/tlmgr.log
D:tlmgr:main: ::tldownload_server hash:: {enabled:1,errorcount:0,initcount:0,initcout:1,ua:LWP::UserAgent=HASH(0x564b37fdb010)}
D:setup_programs: preferring system versions
D:program curl found in path
D:program wget found in path
D:program lz4 not usable from path
D:(unix) trying to set up lz4, default /usr/local/texlive/2019/tlpkg/installer/lz4/lz4.x86_64-linux, arg --version
D: Using shipped /usr/local/texlive/2019/tlpkg/installer/lz4/lz4.x86_64-linux for lz4 (tested).
D:program gzip found in path
D:program xz found in path
./runme.sh: done.
kpsewhich
command worked? Mine prints /
, which is not the directory where tex is installed. Does that mean it failed?
Sep 20, 2020 at 0:40
Cannot find TeX Live root using kpsewhich --var-value=SELFAUTOPARENT.
The output of this command is /
. Is my installation messed up? I have texlive auto-installed.
The return value of -5
means that signature verification for a repository has failed. There is currently a bug in tlmgr
that prevents a sensible error message from being printed, but this is being worked on and should be fixed soon:
https://tug.org/pipermail/tex-live/2020-February/044775.html
The most recent incarnation of this problem stems from the fact that the signing key for the tlcontrib
repository expired. You can check whether you have tlcontrib
enabled by using
$ tlmgr repository list
List of repositories (with tags if set):
http://contrib.texlive.info/current (tlcontrib)
http://mirror.ctan.org/systems/texlive/tlnet (main)
The maintainer of tlcontrib
(Norbert Preining) has set his PGP key to expire every year, such that if the key were compromised it would become useless eventually. To update to the latest key, just execute the key import that you also executed when you first installed tlcontrib
again:
$ curl -fsSL https://www.preining.info/rsa.asc | tlmgr key add -
tlmgr repository list
to manually search for expired keys, the output of tlmgr key list
can be used which directly provides the expiration time.
While still waiting for an official fix, the quickest way to get around this issue is to disable verification of downloads using the verify-repo
argument.
Example:
tlmgr install lm-math --verify-repo=none
I can confirm that this works with texlive 2019 under Ubuntu 20.04.
Note: Default texlive version on Ubuntu 20.04 is 2019. Either you should (manually) upgrade to 2020, or make sure your repository is 2019, and not the CTAN default which is 2020.
Here is an official 2019 repository, and you can add it by:
tlmgr option repository http://ftp.math.utah.edu/pub/tex/historic/systems/texlive/2019/tlnet-final
Alessandro's response is excellent, but it's also worth noting that it's recommended to default to your (already installed) TeXLive directory in bash
cd /usr/local/texlive/2021
before running the wget
call (although I found that I had to run sudo wget
for it to work). This will download the shell file straight into the directory. I found that not doing this and then manually copying the file into the directoty resulted in the sudo kpsewhich
call returning an orphaned /
, which was very frustrating to solve!
Also, after running
PATH="/usr/local/texlive/2021/bin/x86_64-linux/:$PATH"
it may also be useful to run sudo visudo
so that you can add that same path to the front of the 'secure_path' line, then Ctrl+X
to save.
I hope this helps.
http://mirror.ctan.org/systems/texlive/tlnet
. I don't havetlcontrib
. Do you have any suggestion, or it is better to open another question?-5
means that the key is expired. Furthermore you've already go an answer from Norbert on the TeX Live list: tug.org/pipermail/tex-live/2020-April/045307.html