Czy istnieje sposób, aby zobaczyć, na czym dokładnie „wyzwalacze przetwarzania” dotyczą poszczególnych pakietów?

15

Jak zrozumiałem, zwykłe „ wyzwalacze przetwarzania dla < nazwa pakietu” wykonują niektóre zadania specyficzne dla pakietu i systemu, takie jak dodawanie elementów do menu uruchamiania lub aktualizowanie pliku konfiguracyjnego. Czy istnieje sposób, aby zobaczyć, co dokładnie jest robione lub zmieniane na tym etapie? Gdzie można znaleźć dokładne zachowanie kroku?

zxcdw
źródło

Odpowiedzi:

16

Jest, ale wymaga przeszukiwania niektórych skryptów bash w celu uruchomienia pakietów.

  • Załóżmy, że dane dpkgwyjściowe wyglądają następująco:

    Przygotowanie do zamiany zim 0.52-1 (przy użyciu ... / archives / zim_0.52-1_all.deb) ...
    Rozpakowywanie zamiennika zim ...
    Przetwarzanie wyzwalaczy udostępnianych informacji MIME ...
    Przetwarzanie wyzwalaczy dla menu ...
  • Wewnętrznie dpkgwywołuje postinstskrypt dla każdego z tych pakietów z triggeredopcją wiersza polecenia i zerową lub większą liczbą opcji wyzwalacza.

  • Więc po prostu otwórz /var/lib/dpkg/info/PACKAGE.postinst(to skrypt bash) i po prostu poszukaj, co się stanie, kiedy $1będzietriggered

Przykład: man-dbwyzwalacze

Jednym z najczęstszych „wyzwalaczy przetwarzania”, które zobaczysz, jest man-db, gdy instalowany pakiet ma stronę podręcznika man .

Jeśli otworzysz /var/lib/dpkg/info/man-db.postinst, znajdziesz tę sekcję:

jeśli [„$ 1” = wyzwolony]; następnie
    # Nie drukujemy tutaj komunikatu o stanie, jak już powiedział dpkg
    # „Przetwarzanie wyzwalaczy dla man-db ...”.
    run_mandb -pq
    wyjście 0
fi

Możesz więc zobaczyć, że Processing triggers for man-db ...po prostu powoduje to uruchomienie run_mandbfunkcji (również znalezionej w postinstskrypcie) z -pqopcją.

Pomocne zasoby:

  1. Próba uczynienia wyzwalaczy dpkg bardziej użytecznymi i mniej bolesnymi
  2. wyzwala dpkg, zagubiony dokument instruktażowy
ish
źródło
Dlaczego tak wolno ?!
Antonio Petricca