處理 man-db 的觸發器

處理 man-db 的觸發器

運行 sudo aptitude Upgrade 時,幾乎每次軟體包升級後控制台都會凍結很長時間,並顯示訊息「正在處理 man-db 的觸發器...」。可能是什麼問題以及如何解決它?

Ubuntu 版本:12.04(伺服器和 Xubuntu)

提前致謝。


更新:根據我的進一步測試,這個問題似乎與套件 autofs 有關。刪除 autofs 解決了問題。不知道為什麼。然後,我必須對我的檔案系統使用軟連結而不是 autofs 以避免此問題(以及此處發布的其他兩個問題)。

答案1

Processing triggers for man-db僅當文件存在時才執行該步驟/var/lib/man-db/auto-update。這是一個空文件,其唯一目的是控制此行為,因此可以安全地刪除它以停用這個耗時且可能不必要的過程。

我個人在我的所有系統上禁用了此觸發器。雖然 man-db 快取應該會增強手冊頁系統的速度和功能,但在停用觸發器後我沒有遇到任何明顯的效能下降或功能問題。

答案2

警告:執行以下命令將刪除 Ubuntu 的組成部分,例如使用該命令閱讀手冊頁的能力man以及相關實用程式(例如apropos和 )whatis。此外,它還會刪除ubuntu-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 的自動更新標誌的正確方法是在 debconf 資料庫中更改man-db/auto-updateto的值false,然後重新執行將值同步到磁碟的 man-db postinst 腳本。以 root 身分執行以下命令:

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

最初引入此標誌是為了避免在 Debian/Ubuntu 建置守護程式上重建 man-db 資料庫;查看 Debian 錯誤554914579075了解詳情。

相關內容