有没有办法找到没有手册页的已安装二进制软件包?


Answers:


16

您可以通过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
不知道它是devscripts软件包(thanx)的一部分。
shirish


4

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

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

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

man -w -S 1:8:6 <file> (w =显示位置-S 1:8:6限制了第1,8和6节中的人搜寻)。

在所有的文件下递归地目录执行此操作/bin/sbin/usr/bin/usr/sbin,和/usr/games

此外,重定向man2>&1,还重定向到>/dev/null,如果文件具有有效的手册页位置,则不会打印任何内容,但是如果man抱怨“没有手动输入”,则将打印此消息。
作者manpage-alert进一步man从“请参阅文档7中没有帮助的人”消息中剥离错误消息,并仅保留第一行= 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因为其中包含许多不错的实用程序/脚本。我只想知道幕后故事:-)


在devscripts中有很多有趣的软件包,例如dch,rmadison,wnpp-check和其他一些软件包,只是对此一无所知。非常值得。我怀疑这将是bashscript,因为debian一直在尝试消除bashisms并依赖于从一个xterm到另一个xterm更容易的普通shell脚本。
shirish

@shirish仔细观察一下,原始manpage-alert脚本开始于#!/bin/sh -e
George Vasiliou
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.