aproposとman -kが有効な結果を省略または欠落しているのはなぜですか?

aproposとman -kが有効な結果を省略または欠落しているのはなぜですか?

たとえば、次のコマンドを入力した場合:

$ man -k compare

diffコマンドは結果から欠落していますtestが、実際には存在しません。apropos期待どおりに使用して同じ結果を得ました。

$ whereis diff
diff: /usr/bin/diff /usr/share/man/man1/diff.1.gz
$ whereis test
test: /usr/bin/test /usr/share/man/man1/test.1.gz

簡単な説明を確認すると、diff結果は次のようになります。

NAME
       GNU diff - compare files line by line

ご覧のとおり、短い説明に「比較」があります。また、長い説明も確認してみましょう。

DESCRIPTION
       Compare FILES line by line.

説明に「比較」が再び表示されます。

それでは、次の簡単な説明を見てみましょうtest

NAME
       test - check file types and compare values

これがまさに私が期待したものです。しかし、テストの説明には「比較」がありませんでした。

それで、なぜ見つけることman -k compareができないのかわかりません。しかし、私はこれがコマンドの出力に関連していると思います。apropos comparediffwhatis

$ whatis diff
diff (1)             - (unknown subject)
$ whatis test
test (1)             - check file types and compare values

今、これらの違いが発生する理由は、マニュアルページの名前が1つではなく「GNU diff」という2つの単語で構成されているためですが、diffわかりません。

ベストアンサー1

これはGNU diffutilsパッケージのマニュアルページのバグです。疑いがあるように、問題はプログラム名として「diff」だけを表示するのではなく、「GNU diff」などを表示することです。これにより、manプログラムが簡単な説明を認識できなくなります。

python3
>>> import dbm
>>> db = dbm.open('/var/cache/man/index.db')
>>> db['diff\0']
b'-\t1\t1\t1554725040\t0\tA\t-\t-\tgz\t\x00'
>>> db['cat\0']
b'-\t1\t1\t1567679920\t0\tA\t-\t-\tgz\tconcatenate files and print on the standard output\x00'

このバグはdiffutils 3.3以降に発生しましたが、diffutils 3.6より前に発生しました。報告によるとバグ #39760そして固定今回提出してくださいまたは実際に可能です今回提出してください。この修正はまだリリースされておらず、diffutils 3.8でリリースされる予定です。

おすすめ記事