man-db のトリガーの処理

man-db のトリガーの処理

sudo aptitude upgrade を実行すると、ほぼすべてのパッケージのアップグレード後にコンソールが長時間フリーズし、「man-db のトリガーを処理しています...」というメッセージが表示されます。何が問題なのでしょうか。また、どうすれば修正できますか。

Ubuntu バージョン: 12.04 (Server と Xubuntu の両方)

前もって感謝します。


更新: さらにテストしてみると、この問題はパッケージ autofs に関連しているようです。autofs を削除すると問題は解決しました。理由はわかりません。この問題 (およびここに投稿されている他の 2 つの問題) を回避するには、ファイル システムで autofs の代わりにソフト リンクを使用する必要があります。

答え1

このProcessing triggers for man-dbステップは、ファイルが/var/lib/man-db/auto-update存在する場合にのみ実行されます。これは、この動作を制御することのみを目的とした空のファイルであるため、この時間がかかり、おそらく不要なプロセスを無効にするために安全に削除できます。

私は個人的に、すべてのシステムでこのトリガーを無効にしています。man-db キャッシュはマニュアル ページ システムの速度と機能を向上させるはずですが、トリガーを無効にした後、目立ったパフォーマンスの低下や機能上の問題は発生していません。

答え2

注意:以下のコマンドを実行すると、 コマンドを使用してマニュアル ページを読む機能や、やmanなどの関連ユーティリティなど、 Ubuntu の不可欠な部分が削除されます。さらに、メタパッケージも削除され、その結果、追加のパッケージが手動でインストールされたものとしてマークされます。このアドバイスには細心の注意を払って従ってください。aproposwhatisubuntu-standard

誰かの役に立つかもしれません: 私たちの CI でこの問題が定期的に発生しました。

次のコマンドを実行するだけです:

sudo apt-get remove --purge man-db

このコマンドは man-db パッケージを完全に削除しますが、CI 上の私たちのケースでは、このパッケージはまったく役に立ちませんでした。

答え3

mandb インデックスが破損している可能性があります。

インデックスを確認して再作成する

sudo mandb -t
rm -rf /var/cache/man
sudo mandb -c

答え4

man-db 更新トリガーは、debconf の隠しフラグによって制御され、パスのファイルシステムにキャッシュされます/var/lib/man-db/auto-update。キャッシュされたフラグ ファイルは、次の man-db postinst スクリプトの debconf データベースから同期されます。https://sources.debian.org/src/man-db/2.11.2-2/debian/postinst/#L70-L79

man-db/auto-updateman-db の自動更新フラグを切り替える正しい方法は、debconf データベースのの値を変更しfalse、値をディスクに同期する man-db postinst スクリプトを再実行することです。次のコマンドを root として実行します。

echo "set man-db/auto-update false" | debconf-communicate; dpkg-reconfigure man-db

このフラグはもともと、Debian/Ubuntuビルドデーモンのman-dbデータベースの再構築を避けるために導入されました。Debianバグを参照してください。554914そして579075詳細については。

関連情報