Por que falhar ao atualizar o TeXLive no Debian 8.5?

0

Eu corro sem sucesso o seguinte e obtenho o resultado estranho 404 primeiro e depois o hash desconhecido de wget :

root@masi:/home/masi/Documents/# tlmgr update --self

saída

(running on Debian, switching to user mode!)
TLDownload::get_file: response error: 404 File 'texlive.tlpdb.xz' not found (for ftp://ftp.funet.fi/pub/TeX/CTAN/systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz)
TLUtils::download_file: persistent connection ok, but download failed: ftp://ftp.funet.fi/pub/TeX/CTAN/systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
TLUtils::download_file: retrying with wget.
TLUtils::download_file: retry with wget succeeded: ftp://ftp.funet.fi/pub/TeX/CTAN/systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
Unknown directive ...containerchecksum c59200574a316416a23695c258edf3a32531fbda43ccdc09360ee105c3f07f9fb77df17c4ba4c2ea4f3a5ea6667e064b51e3d8c2fe6c984ba3e71b4e32716955... , please fix it! at /usr/share/texlive/tlpkg/TeXLive/TLPOBJ.pm line 210, <$retfh> line 5579.

O problema ocorreu em 27 de novembro e 30 de dezembro de 2016.

Confusão sobre a versão TeXLive

Eu faço o seguinte, que indica o TeXLive 2015 como root:

root@masi:/home/masi# tex -version
TeX 3.14159265 (TeX Live 2015/dev/Debian)
kpathsea version 6.2.1dev
Copyright 2014 D.E. Knuth.
There is NO warranty.  Redistribution of this software is
covered by the terms of both the TeX copyright and
the Lesser GNU General Public License.
For more information about these matters, see the file
named COPYING and the TeX source.
Primary author of TeX: D.E. Knuth.

Eu corro como masi

masi@masi:~$ tex --version
TeX 3.14159265 (TeX Live 2016)
kpathsea version 6.2.2
Copyright 2016 D.E. Knuth.
There is NO warranty.  Redistribution of this software is
covered by the terms of both the TeX copyright and
the Lesser GNU General Public License.
For more information about these matters, see the file
named COPYING and the TeX source.
Primary author of TeX: D.E. Knuth.

Eu corro xelatex em qualquer documento que indique TeXLive 2016 como masi

(/usr/local/texlive/2016/texmf-dist/tex/latex/l3experimental/l3str/l3flag.sty)

Também como masi

command -v tlmgr
/usr/local/texlive/2016/bin/x86_64-linux/tlmgr

Também como masi

command -v tex
/usr/local/texlive/2016/bin/x86_64-linux/tex

TeXLive: 2016, 2015 | SO: Debian 8.5
Instruções: Como faço para atualizar minha distribuição do TeX?

    
por Léo Léopold Hertz 준영 26.11.2016 / 19:54

2 respostas

0

Problema: PATH diferente em masi e root , portanto use su -p para não alterar o PATH ao ir para root . Minha proposta de solução alternativa

su -p
tlmgr update --self

Saída

tlmgr: package repository http://mirror.datacenter.by/pub/mirrors/CTAN/systems/texlive/tlnet (verified)
tlmgr: saving backups to /usr/local/texlive/2016/tlpkg/backups
tlmgr: no self-updates for tlmgr available.
    
por 31.12.2016 / 18:03
0

Solução

Quando você for root, use este sudo -sE ou este su -p para preservar as variáveis de ambiente na sessão atual.

Explicação

Seu sistema está usando texlive versões diferentes para usuários diferentes, e isso é devido à variável de ambiente PATH .

Quando você estiver no terminal e digitar um comando, o shell procurará o programa correspondente nos diretórios PATH . Mas o problema é que há uma prioridade diferente quando o shell procura por um programa no PATH . Por exemplo, eu tenho essa variável PATH :

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin:/snap/bin:/snap/bin

Se eu digitar date no terminal, o shell irá procurar pelo programa date no diretório /usr/local/sbin , caso não seja encontrado ele procurará em /usr/local/bin , caso não seja encontrado ... até que ele olhe em todos os diretórios.

Quando você instalou manualmente texlive 2016, em algum momento você usou a instrução PATH=/usr/local/texlive/2016/bin/x86_64-linux/:$PATH . Desta forma, você fez o seu shell olhar primeiro no diretório /usr/local/texlive/bin/x86_64-linux/ se você digitar qualquer comando. O único problema é que as instruções abaixo não foram aplicadas a todos os usuários, portanto, quando você for root, sua variável PATH será restaurada para seu conteúdo original.

É por isso que ao executar o mesmo comando a partir de masi e root você tem dois programas diferentes. A solução é usar sudo -sE ou su -p para preservar as variáveis de ambiente do usuário anterior.

    
por 31.12.2016 / 18:24