为什么“makewhatis”会在符号链接目录上阻塞,如何修复/避免它?

为什么“makewhatis”会在符号链接目录上阻塞,如何修复/避免它?

例子

(从 macOS 11.7 开始;也出现在 macOS 12.6.1 上;这些是我唯一可以测试的系统)

$ pushd "$(mktemp -d /tmp/makewhatis-XXXXXXX)"
$ mkdir man
$ ln -s man sman
$ mkdir man/man1
$ cp /usr/share/man/man1/true.1 man/man1/

$ /usr/libexec/makewhatis -v -o /dev/null man
man directory man
  man/man1
        reading man/man1/true.1

$ /usr/libexec/makewhatis -v -o /dev/null sman
man directory foo
makewhatis: foo: Not a directory

语境

man -k当搜索在 stderr 上输出一些关于未找到目录的失败时,我注意到了这一点。特别是,makewhatis对 非常不满意/Library/TeX/texbin/man,它是 TeX Live for Mac 发行版(?)为手册页安装的符号链接。我最近才开始看到这一点,因为man通过符号链接可以正常工作。也就是说,man -w latexprints /Library/TeX/texbin/man/man1/latex.1,但man -k latex 2>&1 | cat打印(在我的系统上):

pod2latex(1)             - convert pod documentation to latex format
makewhatis: /Library/TeX/texbin/man: Not a directory
coq-tex(1)               - Process Coq phrases embedded in LaTeX files
Pod::LaTeX(3pm)          - Convert Pod data to formatted Latex
pod2latex(1)             - convert pod documentation to latex format

我不确定这是否是 Apple 特有的(如果是的话,让我们转向 AskDiffernt?)。


我想知道为什么会发生这种情况,但更重要的是我如何修复它而不用乱搞安装程序创建的符号链接。

答案1

Paltrey 回答了这个问题,但我通过运行以下命令在短期内(在 Ventura 上)解决了这个问题:

sudo /usr/libexec/makewhatis /usr/local/texlive/2022/texmf-dist/doc/man

我还将该路径添加到 /etc/manpaths.d/Tex,注释掉安装程序放置在那里的名义上的通用路径。不知道需要做什么才能重建数据库,也许这种情况发生在升级过程中?

如果您走这条路,您可能会在更新 TeX 时承诺需要更新它。

相关内容