取消最小化安装后恢复 mandb-triggers

取消最小化安装后恢复 mandb-triggers

问题

我已使用最小化安装安装了 Ubuntu 22.04,然后通过执行 来“取消最小化” sudo unminimize。但是,该man软件包最初并不存在,因此触发了最初安装的软件包的 mandb-triggers。

结果如下:

$ man ls
No manual entry for ls
$ man bash
No manual entry for bash

对于某些软件包,可以通过重新安装来解决这个问题:

$ man curl
No manual entry for curl
$ sudo apt-get reinstall curl
<...>
$ man curl
# Works!

然而,有些实用程序的情况并非如此:

$ dpkg -S "$(which env)"
coreutils: /usr/bin/env
# Could be reinstalled with apt

$ dpkg -S "$(which bash)"
dpkg-query: no path found matching pattern /usr/bin/bash
# Could not

因此,我想问的是:

  1. 是否有任何选项可以为系统包添加手册页(例如lsbash等)?
  2. 如果没有,是否有任何选项可以强制dpkg处理触发器已安装包?我看到过针对文件执行此操作的选项.deb,但未看到针对已安装文件的选项。

更新 1:“非软件包”程序和非最优解决方案

/bin/usr/bin

此外,ls软件包中还提供了一些其他内容,但和目录coreutils中都存在以下内容:/bin//usr/bin/

$ which ls
/usr/bin/ls
$ ll /usr/bin/ls
-rwxr-xr-x 1 root root 138208 Feb  7 16:03 /usr/bin/ls*
$ ll /bin/ls
-rwxr-xr-x 1 root root 138208 Feb  7 16:03 /bin/ls*
$ dpkg -L coreutils | grep /ls
/bin/ls
/usr/share/man/man1/ls.1.gz

bash安装 bash 的软件包也是如此,/bin/bashPATH/usr/bin/bash

非最优解决方案

好吧,我通过重新安装解决了这个问题每一个机器上的包装:

# WARNING: This will reinstall ALL EXISTING packages
$ apt list --installed 2>/dev/null | tail -n +2 | sed -E 's|^(.+)/.*$|\1|gm' | xargs sudo apt-get reinstall -y

这导致了约 1 小时的下载和安装、内核升级和重启,但问题最终得到了解决。

答案1

如果我没记错的话,软件包中包含手册页,因此可能手册页存在,但尚未编入 man 索引数据库。如果是这样,只需执行一次简单的操作sudo mandb即可找到所有缺失的手册页,问题就解决了。如果由于某种原因此操作不起作用,请尝试sudo mandb -c,这将强制 mandb 从头开始​​重建整个索引数据库。

相关内容