TeX Live 安裝與升級出現問題

TeX Live 安裝與升級出現問題

如果您已經像這樣手動安裝了最新的 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(假設您用作bashshell)。新增類似以下內容的行,然後儲存並退出。

export PATH=/usr/local/texlive/2022/bin/linux-x86_64/:${PATH}

如果您得到cross version error,修復方法是相同的:將正確的路徑新增至 的路徑前面root,它將選擇該路徑。

為什麼有一個版本你沒有安裝?

通常,它將是由套件管理器安裝的版本,以滿足您已安裝的某些內容的依賴關係。這可能就像具有 TeX 模式的編輯器一樣簡單(該編輯器Kile符合此描述)。

舊的 TeX Live 可以刪除嗎?

可能是。但請勿用於rm刪除它。這會帶來比解決的問題更多的問題。使用套件管理器,這就是它的用途。不過,它可能會嘗試刪除您想要的一些內容,因此請注意將刪除的內容清單。

如果您使用 Debian Linux,這裡有一些非常好的指示讓您的軟體套件管理器 ( aptappersynaptic) 相信您擁有 TeX Live,這樣它就不會再次嘗試安裝過時的版本。您也許能夠說服 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是尋求幫助的好地方(當然,在查看手冊頁之後)。

相關內容