Обработка триггеров для man-db

Обработка триггеров для man-db

При запуске sudo aptitude upgrade консоль зависает надолго после почти каждого обновления пакета с сообщением "Обработка триггеров для man-db ...". В чем может быть проблема и как ее исправить?

Версия Ubuntu: 12.04 (как Server, так и 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метапакет, который, в свою очередь, пометит дополнительное количество пакетов как установленные вручную. Следуйте этому совету с особой осторожностью.

Может быть кому-то будет полезно: Я регулярно сталкивался с этой проблемой в нашем КИ.

Просто выполните следующее:

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. Этот кэшированный файл флага синхронизируется из базы данных debconf в скрипте man-db postinst здесь:https://sources.debian.org/src/man-db/2.11.2-2/debian/postinst/#L70-L79.

Правильный способ переключить флаг автообновления man-db — изменить значение man-db/auto-updateна falseв базе данных debconf и повторно запустить скрипт man-db postinst, который синхронизирует значение с диском. Выполните следующие команды как root:

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

Этот флаг был изначально введен для того, чтобы избежать перестройки базы данных man-db в демонах сборки Debian/Ubuntu; см. Ошибки Debian554914и579075для получения подробной информации.

Связанный контент