Come faccio a mostrare le azioni che verranno eseguite dall'installazione di un pacchetto .deb?


33

Vorrei essere in grado di visualizzare gli script / i trigger associati a un pacchetto dovuto per l'aggiornamento in modo da poter dire, ad esempio, se il server Web verrà riavviato. Non riesco a trovare un'opzione attitudinale per mostrarmelo (o apt / dpkg); il meglio che posso ottenere è il contenuto (file). C'è una combinazione di interruttori simulate / verbose / contents che mi sono perso che mostrerà questo?

Inoltre, se un pacchetto provoca qualcosa che sta accadendo, come un riavvio del servizio, che non voglio accadere in questo momento, c'è un modo per installare il pacchetto senza eseguire alcuni o tutti gli script?


Perché questo è stato votato verso il basso? Mi sembra una domanda ragionevole (anche se normalmente fare qualcosa del genere non dovrebbe essere necessario).
sleske,

1
Mi batte. Nessun commento o risposta particolarmente abrasivo, solo un downvote casuale. Come se "normalmente non dovrebbe essere fatto" è lo stesso di "mai dovrebbe essere fatto in nessuna circostanza e neppure educativo". :(
Sam Brightman,

Risposte:


20

È possibile stampare il file di controllo e alcune altre informazioni con dpkg -I package.debo utilizzare dpkg -e package.debper estrarre solo i file di informazioni di controllo.

Inoltre, puoi fare una corsa a secco per vedere cosa farebbe dpkg --dry-run:

dpkg --dry-run -i package.deb

Devo aver perso queste opzioni, grazie. -Non mi sembra di mostrare molto però - sembra solo la prima riga (interrobang).
Sam Brightman,

2
Nota: è necessario disporre del file del pacchetto disponibile localmente. Scaricalo prima tramite 'aptitude download <nomepacchetto>'.
Martijn Heemels,

3
L'opzione -e creerà una DEBIANdirectory con il controlfile e i vari file di script che verranno eseguiti. postinstdi solito è molto interessante in quanto verrà eseguito dopo l'installazione del pacchetto.
dwurf

8

No, non conosco alcun modo per farlo usando aptitude.

Puoi guardare direttamente gli script; gli script eseguiti durante l'aggiornamento sono contenuti nel pacchetto. Decomprimi il deb usando ar:

ar -x package.deb

Quindi guarda dentro control.tar.gz, contiene gli script.


Sarebbe meglio se aptitude -s con alcune opzioni di verbosità mostrasse effettivamente gli script che avrebbe eseguito per l'intero aggiornamento. Questo è essenzialmente quello che stavo chiedendo, ma penso che la risposta di Mikael sia leggermente più semplice.
Sam Brightman,

2

C'è anche l' --debugopzione per dpkg, come insudo dpkg --debug=72200 -i package.deb

Esistono diverse opzioni disponibili per un output dettagliato e possono essere combinate.

Potete vedere tutte le opzioni disponibili eseguendo: 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.

Tuttavia, l'installazione continuerà a funzionare, vero?
Sam Brightman,

Sì, hanno ragione al 100%. Questo deve essere fatto in un'altra istanza (di sviluppo).
estibordo

1

No, non puoi eseguire parte di uno script del manutentore, non ci sono hook per farlo accadere.

Puoi solo vedere cosa farebbe lo script esaminandolo a mano - di nuovo, nessuna "corsa a secco" può dirti esattamente cosa farà e non farà, solo "Eseguirò il postinst con questi argomenti".

Questi sono i motivi per cui abbiamo ambienti di gestione temporanea e di test.


Intendevo un sottoinsieme degli script, non parte di un singolo script. Scusa se non era chiaro. Non voglio magia, conoscere la sceneggiatura e gli argomenti mi permette di ispezionare a mano o modificare le parti che sono scomode.
Sam Brightman,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.