关于 texhash 和 TeXlive 的正确安装

关于 texhash 和 TeXlive 的正确安装

因此,我正在运行 Linux Mint(但我猜 Ubuntu 也是如此),众所周知,它们的TeX发行版往往略显过时。现在我不能没有这些,决定使用 TeXlive 主页上的 install-tl 进行安装。不知何故,我无法以普通用户身份安装它(我认为这很正常,因为它安装在根目录中),所以我继续安装TeXlive

sudo perl ./install-tl

并将路径添加到.bashrc。一切正常,我的TeXlive安装成功。除了texhash选项。以普通用户身份运行它没有问题,只是我TeXlive以 root 身份安装,因此texhash以普通用户身份运行不会执行任何操作(directory not writable. Skipping...)。我想没问题,我只需以 root 身份执行即可。但不知何故texhash没有为 root 安装。

现在,texhash它以某种方式与更新目录树有关,但我真的不知道它的作用。我使用它在我的~/texmf/文件夹中将我的包添加到全局路径(我认为),但在查看此问题的信息时,我在评论中看到问题是这显然是没有必要的,尽管我不明白我现在该做什么。

所以如果我不从 CTAN 添加新包或者更新,我真的不需要texhash,一切都好吗?

总结一下:我想知道:

  • 我为什么需要texhash
  • 我可以避免在 Linux Mint/ubuntu 上以 root 身份安装吗(这里他们说你不必成为 root,甚至不鼓励这样做)?
  • 我应该以某种方式安装texhashroot 吗?

我意识到这可能充其量是一个模糊的问题,但我没有找到一个我容易理解的答案,所以我很感激任何对此的想法。

答案1

我为什么需要 texhash?

TeX 有很多小文件,例如 .tfm 文件。因此查找某个文件需要大量的磁盘活动。Texhash 会查看一次并记住所有文件在一个简单的单文件数据库中的位置,然后当 TeX 程序需要查找这些文件时,只需读取该数据库即可。大致来说,它会记住与 TeX 相关的文件的位置。

缺点是,当您添加或移动文件时,您需要运行 texhash。

我可以避免在 linux Mint/ubuntu 上以 root 身份安装吗(这里他们说你不必是 root,甚至不鼓励这样做)?

我在 Ubuntu 上以非 root 用户身份进行安装。(目前,我使用的是 debian 软件包。)如果您的系统只有一人,那么 root 用户可能是最简单的。

我是否应该以某种方式为 root 安装 texhash?

说什么whereis texhash?(我的是/usr/bin/texhash。)权限是什么?为了比较,我的是这样的。

ftpmaint@millstone:~$ ls -l /usr/bin/texhash
lrwxrwxrwx 1 root root 8 2011-05-25 08:01 /usr/bin/texhash -> mktexlsr
ftpmaint@millstone:~$ ls -l /usr/bin/mktexlsr
-rwxr-xr-x 1 root root 6885 2011-04-10 15:52 /usr/bin/mktexlsr

答案2

我在我的文件夹中使用它(texhash~/texmf/将我的包添加到全局路径(我认为)

这不是它的texhash作用。它为每个配置为使用索引的树构建一个索引。这些树是独立的,每个都有自己的索引,因此您的文件~/texmf始终是个人的。正如 Jim 所解释的那样,索引很有用,可以避免在磁盘上搜索文件,这对于大树来说会非常慢(上次我检查时,主树有 5,000 个目录中的 50,000 个文件)。但是,~/texmf通常不包含那么多文件,因此默认情况下它配置为不使用索引(从 TeX Live 2007 开始)。

此外,甚至如果 ~/texmf正在使用索引,您仍然可以通过运行来刷新它而无需以 root 身份运行,texhash ~/texmf因为索引写在树的根部。

我为什么需要texhash

因此,简短的回答是:如果你所做的只是添加文件,那么~/texmf只需执行不是需要运行它。

我可以避免以 root 身份安装吗

当然可以。只需选择TEXROOT您有写入权限即可。这可以通过两种方式完成:以 root 身份向用户授予写入权限/usr/local/texlive并以用户身份安装。或者,安装在家中的某个地方,例如~/usr/texlive或任何您喜欢的地方。

在我的 Debian 机器上,我已经有一段时间没有以 root 身份安装 TeX Live 了,而且从来没有遇到过任何问题。此外,您链接到的页面属于 TeX Live 的官方文档,如果它说您不需要 root,您当然可以相信。

我是否应该以某种方式为 root 安装 texhash?

没有所谓的“安装”。只需确保texhash在 root 的PATH 或者导出用户的PATH按照 henrique 的评论建议或者用完整路径调用它,例如sudo /usr/local/texlive/2011/bin/x86_64-linux/texhash

相关内容