При запуске 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для получения подробной информации.