有没有办法找到已安装的没有联机帮助页的二进制包?

有没有办法找到已安装的没有联机帮助页的二进制包?

我最近看到https://lintian.debian.org/tags/binary-without-manpage.html它显示了大约 14k 个缺少的联机帮助页。

这意味着某些二进制包(不是库)很可能缺少联机帮助页。如何获取没有联机帮助页的已安装二进制包/应用程序(不是库)的列表?我可能知道一些并开始为此做出一些贡献。

答案1

您可以通过manpage-alert命令列出所有没有手册页的二进制文件

manpage-alert - check for binaries without corresponding manpages

DESCRIPTION

   manpage-alert  searches the given list of paths for binaries without cor‐
   responding manpages.

   If no paths are specified on the command line, the path list  /bin  /sbin
   /usr/bin /usr/sbin /usr/games will be assumed

答案2

虽然manpage-alert确实按照您的要求进行操作,但您应该注意,您的问题链接中的列表是由不同的过程生成的,这是 Lintian 中的以下检查:

https://github.com/Debian/lintian/blob/master/checks/manpages.pm

因此可以通过lintian使用选项-T binary-without-manpage(以及其他选项来选择要检查的包)调用来生成它。

答案3

感谢已接受的答案,了解 utility 的存在很有趣manpage-alert,它是包的一部分devscripts,实际上是一个 shell 脚本。

我尝试安装,devscripts但提示安装大约 70MB 的依赖项,所以我跳过了。

下载devscriptsdeb 包 ( apt download devscripts),解压 deb 并仔细查看manpage-alert脚本,“幕后”的整个故事是这个警报脚本运行命令:

man -w -S 1:8:6 <file> (w=show location -S 1:8:6 限制第 1,8 和 6 节中的人员搜索)。

/bin该操作在、/sbin/usr/bin/usr/sbin、目录下的所有文件中递归执行/usr/games

此外,重定向man2>&1以及重定向到 时>/dev/null,如果文件具有有效的手册页位置,则不会打印任何内容,但如果man抱怨“无手动输入”,则会打印此消息。
作者manpage-alert进一步从“see man 7 undocumented for help”消息中剥离man错误消息,并仅保留第一行 = No manual entry for xxxx

因此,以下几行将在不安装 devscripts 包的情况下提供类似的缺少手册页的二进制文件的打印:

F=( "/bin/*" "/sbin/*" "/usr/bin/*" "/usr/sbin/*" "/usr/games/*" )
for f in ${F[@]};do 
  for ff in $f;do
    if ! mp=$(man -w -S 1:8:6 "${ff##*/}" 2>&1 >/dev/null);then 
       echo "$mp" |grep -v "man 7 undocumented" #man 7 undocumented is printed in a separate line.
    fi
  done
done

PS:${ff##*/}仅保留命令名称,删除路径/usr/bin//bin/其他内容

上面也可以作为单行运行:

gv@debi64:$ F=( "/bin/*" "/sbin/*" "/usr/bin/*" "/usr/sbin/*" "/usr/games/*" );for f in ${F[@]};do for ff in $f;do if ! mp=$(man -w -S 1:6:8 "${ff##*/}" 2>&1 >/dev/null);then echo "$mp" |grep -v "man 7 undocumented";fi;done;done

No manual entry for ntfsmove
No manual entry for ipmaddr
No manual entry for iptunnel
^C

PS:您当然可以安装,devscripts因为其中包含许多不错的实用程序/脚本。我只是想知道引擎盖下运行的是什么:-)

相关内容