Paket başına “işleme tetikleyicilerinin” tam olarak ne yaptığını görmenin bir yolu var mı?


15

Anladığım kadarıyla, normal " <paket_adı> için işleme tetikleyicileri ", bir başlatma menüsüne öğe ekleme veya bir yapılandırma dosyasını güncelleme gibi pakete ve sisteme özgü bazı görevler yapar. Bu adım sırasında tam olarak ne yapıldığını veya değiştirildiğini görmenin gerçek bir yolu var mı? Adımın tam davranışını nerede bulabilirim?

Yanıtlar:


16

Var, ancak tetiklenen paketler için bazı bash komut dosyalarını kazmayı gerektirir.

  • dpkgÇıktının aşağıdaki gibi olduğunu varsayalım :

    Zim 0.52-1'i değiştirmeye hazırlanma (... / archives / zim_0.52-1_all.deb kullanılarak) ...
    Yedek zim ambalajından çıkarılıyor ...
    Paylaşılan mime-info için tetikleyiciler işleniyor ...
    Menü için tetikleyiciler işleniyor ...
  • Dahili olarak, bu paketlerin her biri için komut satırı seçeneği ve sıfır veya daha fazla tetikleme seçeneği ile komut dosyası dpkgçağırmaktır .postinsttriggered

  • Yani, sadece açık /var/lib/dpkg/info/PACKAGE.postinst(bir betik görüyorsunuz) ve sadece ne olur bakmak $1olduğunutriggered

Örnek: man-dbtetikleyiciler

Gördüğünüz en yaygın "İşleme tetikleyicilerinden" biri man-db, yüklenen pakette bir man sayfası olduğunda.

Açarsanız /var/lib/dpkg/info/man-db.postinst, bu bölümü bulacaksınız:

["$ 1" = tetiklendi]; sonra
    # Burada dpkg'ın söylediği gibi bir durum mesajı yazdırmıyoruz
    # "Man-db için tetikleyiciler işleniyor ...".
    run_mandb -pq
    çıkış 0
fi

Böylece Processing triggers for man-db ..., run_mandbişlevin ( postinstkomut dosyasında da bulunur ) -pqseçenekle çalıştırılmasını sağlar .

Yardımcı Kaynaklar:

  1. DPkg tetikleyicileri daha kullanışlı ve daha az acı verici hale getirmeye çalışmak
  2. dpkg tetiklenir, kayıp nasıl yapılır belgesi

Neden bu kadar yavaş ?!
Antonio Petricca
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.