マンページのないインストール済みバイナリパッケージを見つける方法はありますか?


13

最近、https: //lintian.debian.org/tags/binary-without-manpage.htmlを見ましたが、欠落している14,000のマンページが表示されています。

これは、いくつかのバイナリパッケージ(ライブラリではない)にマンページがない可能性が高いことを意味します。マンページを持たないインストール済みバイナリパッケージ/アプリケーション(ライブラリではない)のリストを取得するにはどうすればよいですか?私はいくつかを知っていて、それに少し貢献し始めるかもしれません。

回答:


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。
シャーリッシュ

5

一方でmanpage-alert、あなたが求める何ん、あなたは、あなたの質問からのリンクで一覧がLintianで、以下のチェックで別のプロセスによって生成されることに注意してください。

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

そのためlintian-T binary-without-manpageオプション(およびチェックするパッケージを選択する他のオプション)を呼び出して生成できます。


それについて知りませんでした、ありがとう。
シャーリッシュ

4

受け入れられた回答のおかげで、実際にはシェルスクリプトであるmanpage-alertdevscriptsパッケージの一部であるutilityの存在について学ぶのは興味深いものでした。

インストールしようとしましたdevscriptsが、約70MBの依存関係をインストールするプロンプトが表示されたため、スキップしました。

devscriptsdebパッケージのダウンロード(apt download devscripts)を抽出して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ページの場所がある場合は何も印刷されませんがman、「手動入力なし」について苦情を言うと、このメッセージが印刷されます。
の作成者は、「ヘルプについては文書化されていないman 7を参照してください」メッセージからエラーメッセージをmanpage-alertさらに除去しman、最初の行のみを保持します=No manual entry for xxxx

その結果、次の数行は、devscriptsパッケージをインストールせずに、manページが欠落しているバイナリの同様の出力を提供します。

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などの興味深いパッケージがたくさんありますが、これについては知りませんでした。それだけの価値があります。debianはbashismを削除し、xterm間でより簡単なプレーンシェルスクリプトに依存しようとしているため、bashscriptになるとは思いません。
シャーリッシュ

@shirishよく見ると、元のmanpage-alertスクリプトは次で始まります#!/bin/sh -e
ジョージヴァシリウ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.