Jak pokazać działania, które podejmie instalacja pakietu .deb?

33

Chciałbym móc wyświetlić skrypty / wyzwalacze powiązane z pakietem wymaganym do aktualizacji, aby na przykład stwierdzić, czy spowoduje to ponowne uruchomienie serwera WWW. Nie mogę znaleźć opcji aptitude, która by mi to pokazała (lub apt / dpkg); najlepsze, co mogę uzyskać, to zawartość (pliki). Czy jest jakaś kombinacja przełączników symulacji / pełnych / treści, które przegapiłem, które to pokażą?

Dodatkowo, jeśli pakiet powoduje coś - na przykład ponowne uruchomienie usługi - czego nie chcę teraz robić, czy istnieje sposób na zainstalowanie pakietu bez uruchamiania niektórych lub wszystkich skryptów?

Sam Brightman
źródło
Dlaczego to odrzucono? Wydaje mi się to rozsądnym pytaniem (nawet jeśli robienie czegoś takiego nie powinno być zwykle konieczne).
sleske
1
Bije mnie Brak szczególnie irytujących komentarzy lub odpowiedzi, po prostu losowa opinia. Jakby „normalnie nie należy tego robić” jest tym samym, co „nigdy nie należy tego robić w żadnych okolicznościach, a nawet edukacyjnych”. :(
Sam Brightman,

Odpowiedzi:

20

Możesz wydrukować plik kontrolny i niektóre inne informacje za pomocą dpkg -I package.deblub użyć dpkg -e package.debdo wyodrębnienia tylko plików informacji kontrolnych.

Możesz także wykonać test na sucho, aby zobaczyć, co zrobiłby dpkg --dry-run:

dpkg --dry-run -i package.deb
Mikael S.
źródło
Dzięki, musiałem przegapić te opcje. -Nie wydaje mi się jednak pokazywać zbyt wiele - wygląda tylko na pierwszą linię (interrobang).
Sam Brightman
2
Uwaga: plik pakietu musi być dostępny lokalnie. Pobierz najpierw poprzez „aptitude download <packagename>”.
Martijn Heemels
3
Opcja -e utworzy DEBIANkatalog z controlplikiem i różnymi plikami skryptów, które zostaną uruchomione. postinstjest zwykle bardzo interesujące, ponieważ zostanie wykonane po pomyślnym zainstalowaniu pakietu.
dwurf
8

Nie, nie znam żadnego sposobu, aby to zrobić za pomocą aptitude.

Możesz spojrzeć na skrypty bezpośrednio; skrypty uruchamiane podczas aktualizacji znajdują się w pakiecie. Rozpakuj deb za pomocą ar:

ar -x package.deb

Następnie spójrz control.tar.gz, zawiera skrypty.

Śleske
źródło
Byłoby lepiej, gdyby aptitude -s z niektórymi opcjami gadatliwości faktycznie pokazywał skrypty, które uruchomiłby dla całej aktualizacji. O to właściwie prosiłem, ale myślę, że odpowiedź Mikaela jest nieco prostsza.
Sam Brightman
2

Istnieje również --debugopcja dpkg, jak wsudo dpkg --debug=72200 -i package.deb

Istnieje kilka dostępnych opcji pełnego wyjścia i można je łączyć.

Można zobaczyć wszystkie dostępne opcje wydając polecenie dpkg --debug=help.

pi@kaldi:~ $ dpkg --debug=help
dpkg debugging option, --debug=<octal> or -D<octal>:

 Number  Ref. in source   Description
      1  general          Generally helpful progress information
      2  scripts          Invocation and status of maintainer scripts
     10  eachfile         Output for each file processed
    100  eachfiledetail   Lots of output for each file processed
     20  conff            Output for each configuration file
    200  conffdetail      Lots of output for each configuration file
     40  depcon           Dependencies and conflicts
    400  depcondetail     Lots of dependencies/conflicts output
  10000  triggers         Trigger activation and processing
  20000  triggersdetail   Lots of output regarding triggers
  40000  triggersstupid   Silly amounts of output regarding triggers
   1000  veryverbose      Lots of drivel about eg the dpkg/info directory
   2000  stupidlyverbose  Insane amounts of drivel

Debugging options can be mixed using bitwise-or.
Note that the meanings and values are subject to change.
estibordo
źródło
To nadal będzie wymagało instalacji, prawda?
Sam Brightman,
Tak, mają 100% racji. Należy to zrobić w innej instancji (programistycznej).
estibordo
1

Nie, nie możesz uruchomić części skryptu opiekuna, nie ma żadnych haczyków, które by tak się stało.

Możesz tylko zobaczyć, co zrobiłby skrypt, sprawdzając go ręcznie - ponownie, żaden „suchy bieg” nie powie ci dokładnie, co zrobi, a czego nie zrobi, tylko „Uruchomię postinst z tymi argumentami”.

To są powody, dla których mamy środowiska testowe i testowe.

womble
źródło
Miałem na myśli podzbiór skryptów, a nie część pojedynczego skryptu. Przepraszam, jeśli to nie było jasne. Nie chcę magii, znając skrypt i argumenty pozwalają mi na ręczne sprawdzenie lub modyfikację niewygodnych części.
Sam Brightman