![“luaotfload.sty 未找到”和 tlmgr“在 debian 上运行”问题](https://linux22.com/image/359805/%E2%80%9Cluaotfload.sty%20%E6%9C%AA%E6%89%BE%E5%88%B0%E2%80%9D%E5%92%8C%20tlmgr%E2%80%9C%E5%9C%A8%20debian%20%E4%B8%8A%E8%BF%90%E8%A1%8C%E2%80%9D%E9%97%AE%E9%A2%98.png)
我刚刚安装了 Linux Mint 18.2 和 TeX Live 2017(我很确定;见下文)。实际上我有两个单独的问题被掩盖为一个问题,所以我将同时介绍它们。
我有以下最小工作示例:
\documentclass{article}
\usepackage{fontspec}
\begin{document}
This is a test.
\end{document}
我尝试用 编译它lualatex
,但编译不成功。它给了我
This is LuaTeX, Version beta-0.80.0 (TeX Live 2015/Debian) (rev 5238)
restricted \write18 enabled.
(./test.tex
LaTeX2e <2016/02/01>
Babel <3.9q> and hyphenation patterns for 1 language(s) loaded.
(/usr/share/texlive/texmf-dist/tex/latex/base/article.cls
Document Class: article 2014/09/29 v1.4h Standard LaTeX document class
(/usr/share/texlive/texmf-dist/tex/latex/base/size10.clo))
(/usr/share/texlive/texmf-dist/tex/latex/fontspec/fontspec.sty
(/usr/share/texlive/texmf-dist/tex/latex/l3kernel/expl3.sty
(/usr/share/texlive/texmf-dist/tex/latex/l3kernel/expl3-code.tex)
(/usr/share/texlive/texmf-dist/tex/latex/l3kernel/l3pdfmode.def))
(/usr/share/texlive/texmf-dist/tex/latex/l3packages/xparse/xparse.sty)
! LaTeX Error: File `luaotfload.sty' not found.
Type X to quit or <RETURN> to proceed,
or enter new name. (Default extension: sty)
为什么这么说TeX Live 2015
我不知道...所以,我用此解决方案并试图逃跑tlmgr update lmodern
,但我得到了
(running on Debian, switching to user mode!)
Unknown directive ...containerchecksum LONGCHECKSUM... , please fix it! at /usr/share/texlive/tlpkg/TeXLive/TLPOBJ.pm line 210, <$retfh> line 5761.
其中 LONGCHECKSUM 是长校验和。现在,根据这个答案,这是一个 Debian 多年前就已修复的错误!!并且,根据此解决方案,我必须使用旧版 TeXLive 来运行 tlmgr。这对我来说很有趣,因为当我运行tex --version
它时它返回TeX 3.14159265 (TeX Live 2015/Debian)
,但我 100% 确定我下载了2017 版本。
说实话,我现在很迷茫。我正在一台新电脑上做这一切,现在我只想回去工作。任何帮助都非常好。如果这不是最好的发帖地点,请给我指明正确的方向。
编辑:事实证明我使用的是 TeX Live 的 repo 版本。export PATH=my/texlive/directory/:$PATH
在 ~/.bashrc(而不是 ~/.profile)中执行操作解决了该问题,现在我的系统正在使用 TeX Live 2017,并且一切都按预期进行编译。
答案1
以上所有评论实际上都回答了这个问题。为了让其他搜索者受益,我将它们放在一起。
许多 Linux 发行版(所有发行版?)都包含一个在发行版发布之前准备的 texlive 版本。例如,Ubuntu 的当前长期版本(16.04)包含 texlive 2015,尽管 texlive 现在是 2017 年。Linux 系统的定期更新通常不会将 texlive 转入后续版本。在上述情况下,无论您更新频率如何,您仍将使用 texlive 2015。
如果您曾经通过发行版包管理器安装过 texlive,那么除非您完全卸载它,否则它会潜伏在您的系统中。当您尝试编译时,后续安装的较新的 texlive 可能不会选择其文件。相反,将使用较旧的文件。
解决方案是首先完全卸载与 texlive 相关的所有内容。小心不要留下任何碎片。您也可以在主文件夹中查找隐藏的 ~/.texlive 文件夹或 ~/.texmf-local,然后删除它们。还要检查 /etc 文件夹。
然后,您可以直接从 TUG 安装 texlive 2017。安装完成后,终端可能会建议您设置某些环境变量,以便系统可以找到此 texlive。这可能涉及修改 ~/.bashrc 或 ~/.profile,或者您可以在每次调用程序时在终端中导出变量。
如果您使用 TeX 编辑器(例如 TeXWorks),它可能会拒绝从发行版包管理器安装,除非您安装了旧发行版的 texlive。如果您不注意,可能会无意中安装旧版 texlive,然后又回到原点。幸运的是,您可以直接从其项目手动下载 TeXWorks 作为 deb 包,然后使用 dpkg 程序安装它。它可能需要一个或两个辅助程序,您可以按照通常的方式安装它们。只需确保您没有安装系统 texlive。
您手动安装的 texlive 是通过其自己的 tlmgr 进行更新的,而不是通过发行版更新。