Debian

為什麼無法在 Debian 8.5 中更新 TeXLive?

  • December 31, 2016

我未成功執行以下命令並首先獲得奇怪的輸出 404,然後從以下位置獲得未知雜湊wget

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

輸出

(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.

問題發生在 2016 年 11 月 27 日和 12 月 30 日。

對 TeXLive 版本的困惑

我執行以下操作,表明 TeXLive 2015 為 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.

我執行為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.

xelatex在任何表明TeXLive 2016的文件上執行masi

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

也作為masi

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

也作為masi

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

TeXLive:2016、2015

作業系統:Debian 8.5

說明:如何更新我的 TeX 發行版?

問題:不同的 PATH masiroot所以使用su -p時不要更改 PATH root。我的解決方法建議

su -p
tlmgr update --self

輸出

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.

解決方案

當您進入 root 時,使用 thissudo -sE或 thissu -p來保留目前會話中的環境變數。

解釋

您的系統texlive為不同的使用者使用不同的版本,這是因為 environment variable PATH

當您在終端中並鍵入命令時,shell 將在您的PATH目錄中查找相應的程序。但問題是,當 shell 在PATH. 例如,我有這個PATH變數:

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

如果我在終端中輸入,shell 將在目錄中date查找程序,如果沒有找到,他會查找,如果沒有找到……直到他查看所有目錄。date``/usr/local/sbin``/usr/local/bin

當您手動安裝texlive2016 時,有時您使用了指令PATH=/usr/local/texlive/2016/bin/x86_64-linux/:$PATH。這樣,/usr/local/texlive/bin/x86_64-linux/如果您鍵入任何命令,您的 shell 就會首先在目錄中查找。唯一的問題是下面的指令並沒有應用於所有使用者,所以當你進入 root 時,你的PATH變數將恢復到原來的內容。

masi這就是為什麼當從並root給你兩個不同的程序執行相同的命令時。解決方案是使用sudo -sEsu -p保留以前使用者的環境變數。

引用自:https://unix.stackexchange.com/questions/326239