查找系统手册页数最多的软件包

查找系统手册页数最多的软件包

我想输出拥有最多系统手册页的已安装软件包的名称。有命令可以做到这一点吗?

答案1

对于基于 Debian 的系统,获取最多的软件包已安装手册页:

dpkg -S '/usr/share/man/*.gz' | cut -d: -f1 | sort | uniq -c | sort -rn | head -1 | awk '{print $2}'

要获取包含最多可用手册页的软件包(无论是否安装):

apt-file search /usr/share/man | cut -d: -f1 | uniq -c | sort -rn | head -1 | awk '{print $2}'

在我的系统上,具有最多可用手册页的软件包是linux-manual-3.2.

解释

pkg采用用于一次创建一个步骤的管道:

  • apt-file search /usr/share/man

    这将返回层次结构中所有文件的包和文件名/usr/share/man

  • cut -d: -f1

    这会删除列表的文件名,以便我们只有包列表。

  • uniq -c

    这会计算每个包中的手册页数量。 (通常,在使用之前需要进行排序uniq -c,但apt-find一次生成一个包的输出,使得这一步骤变得不必要。)

  • sort -rn

    这会按降序进行数字排序,以便包含最多手册页的包位于顶部,而包含最少手册页的包位于底部。

  • head -1

    这将选择具有最多手册页的第一行。

  • awk '{print $2}'

    这将从该行选择包名称。

我发现仅使用此管道的一部分很有趣:

apt-file search /usr/share/man | cut -d: -f1 | uniq -c | sort -rn | less

这将通过 来显示less按手册页数量降序排列的包列表。在我的系统上,前五名是:

   3453 linux-manual-3.2
   3384 liblapack-doc-man
   2350 freebsd-manpages
   1916 manpages-ja-dev
   1905 manpages-fr-dev

答案2

在我的 gentoo box 命令上

qfile /usr/share/man/*/* | awk '{print $1}' | sort | uniq -c | sort -n

给出

    864 sys-libs/ncurses
   1139 sys-apps/man-pages-posix
   1283 dev-libs/openssl
   2209 sys-apps/man-pages
   2246 x11-libs/libxcb

但包括之后全部带有一点**模式帮助的子目录

qfile /usr/share/man/**/* | awk '{print $1}' | sort | uniq -c | sort -n

手册页获胜:

    933 sys-libs/ncurses
   1142 sys-apps/man-pages-posix
   1352 dev-libs/openssl
   2254 x11-libs/libxcb
   2310 sys-apps/man-pages

答案3

Debian/Ubuntu/Mint 的替代方案...

$ cd /var/lib/dpkg/info && 
  grep -c '^/usr/share/man/.*/' *.list | sort -t: -k2rn | less -XF

给我:

manpages-dev.list:1962
libssl-doc.list:1171
tcl8.6-doc.list:813
perl-doc.list:719
libdatetime-locale-perl.list:470
tcllib.list:407

答案4

该解决方案有效中央操作系统RHEL机器。

rpm -qf $(man -w $(compgen -ac)) | sort | uniq -c | sort -nr | head -1

我可以使用 生成系统中可用的所有命令的列表compgen -ac。现在,man -w可以知道该命令对应的手册页了。

我将此手册页作为输入,rpm -qf它将为我提供拥有它的包。现在,我对输出进行排序,然后找到总出现次数,然后获取第一行,该行将给出包名称以及与该包对应的手册页数。运行上述命令后,我得到的输出是,

329 netpbm-progs-10.47.05-11.el6.x86_64

因此,上面的输出表明我有 329 个软件包提供的命令的手册页条目,netpbm-progs-10.47.05-11.el6.x86_64这是我的系统中最高的。

参考

https://www.kernel.org/doc/man-pages/man_pages_other.html

相关内容