Есть ли способ увидеть, что именно «триггеры обработки» делают для каждого пакета?

15

Как я понял, обычный « Триггер обработки для <packagename> » выполняет некоторые специфичные для пакета и системы задачи, такие как добавление элементов в меню запуска или обновление файла конфигурации. Есть ли реальный способ увидеть, что именно делается или изменяется на этом этапе? Где можно найти точное поведение шага?

zxcdw
источник

Ответы:

16

Есть, но для этого нужно просмотреть некоторые скрипты bash для запуска пакетов.

  • Предположим, что dpkgрезультат выглядит так:

    Подготовка к замене zim 0.52-1 (используя ... / archives / zim_0.52-1_all.deb) ...
    Распаковка замена зим ...
    Обработка триггеров для shared-mime-info ...
    Обработка триггеров для меню ...
  • Внутренне, что dpkgвызывает postinstскрипт для каждого из этих пакетов с параметром triggeredкомандной строки и нулем или более параметрами триггера.

  • Таким образом, вы просто открыть /var/lib/dpkg/info/PACKAGE.postinst(это Баш скрипт), а просто посмотреть на то , что происходит , когда $1этоtriggered

Пример: man-dbтриггеры

Одним из наиболее распространенных «триггеров обработки» вы будете видеть для man-dbвсякий раз, когда пакет устанавливается имеет человек страницу.

Если вы откроете /var/lib/dpkg/info/man-db.postinst, вы найдете этот раздел:

if ["$ 1" = сработало]; тогда
    # Мы не печатаем здесь статусное сообщение, как уже сказал dpkg
    # "Обработка триггеров для man-db ...".
    run_mandb -pq
    выход 0
фи

Таким образом, вы можете видеть, что это Processing triggers for man-db ...просто приводит к запуску run_mandbфункции (также найденной в postinstскрипте) с -pqопцией.

Полезные ресурсы:

  1. Попытка сделать триггеры dpkg более полезными и менее болезненными
  2. триггеры dpkg, потерянный документ с инструкциями
иш
источник
Почему это так медленно ?!
Антонио Петрица