Comment puis-je montrer les actions que l'installation d'un paquet .deb va prendre?

33

J'aimerais pouvoir afficher les scripts / déclencheurs associés à un package en raison d'une mise à niveau afin de pouvoir déterminer, par exemple, si le serveur Web sera redémarré. Je ne trouve pas d'option d'aptitude pour me montrer cela (ou apt / dpkg); le mieux que je puisse obtenir est le contenu (fichiers). Existe-t-il une combinaison de commutateurs simuler / verbose / contenu que j'ai manquée qui le montre?

De plus, si un package provoque un événement (un redémarrage du service, par exemple) que je ne souhaite pas se produire pour le moment, existe-t-il un moyen de l'installer sans exécuter tout ou partie des scripts?

Sam Brightman
la source
Pourquoi cela a-t-il été rejeté? Cela me semble une question raisonnable (même si cela ne devrait normalement pas être nécessaire).
Sleske
1
Me bat. Pas de commentaires ou de réponses particulièrement abrasifs, juste un vote aléatoire. Comme si "normalement ne devrait pas être fait" est identique à "ne devrait jamais être fait en aucune circonstance et même pas éducatif". :(
Sam Brightman

Réponses:

20

Vous pouvez imprimer le fichier de contrôle et certaines autres informations avec dpkg -I package.deb, ou utiliser dpkg -e package.debpour extraire uniquement les fichiers d’informations de contrôle.

Vous pouvez également faire un essai pour voir ce que dpkg ferait avec --dry-run:

dpkg --dry-run -i package.deb
Mikael S
la source
J'ai dû manquer ces options, merci. -Je ne semble pas montrer grand chose cependant - ressemble à la première ligne (interrobang) seulement.
Sam Brightman
2
Remarque: le fichier de package doit être disponible localement. Téléchargez-le d'abord via 'aptitude download <nom_paquet>'.
Martijn Heemels
3
L'option -e créera un DEBIANrépertoire avec le controlfichier et les différents fichiers de script à exécuter. postinstest généralement très intéressant car il sera exécuté une fois le paquet installé.
Dwurf
8

Non, je ne connais aucun moyen de faire cela en utilisant aptitude.

Vous pouvez regarder les scripts directement; les scripts exécutés lors de la mise à niveau sont contenus dans le package. Décompressez le deb en utilisant ar:

ar -x package.deb

Puis regardez dans control.tar.gz, il contient les scripts.

sleske
la source
Ce serait mieux si aptitude -s avec quelques options de verbosité montrait réellement les scripts à exécuter pour toute la mise à jour. C'est essentiellement ce que je demandais, mais je pense que la réponse de Mikael est légèrement plus simple.
Sam Brightman
2

Il y a aussi l' --debugoption pour dpkg, comme danssudo dpkg --debug=72200 -i package.deb

Il existe plusieurs options disponibles pour une sortie détaillée et elles peuvent être combinées.

Vous pouvez voir toutes les options disponibles en exécutant: 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
la source
Cela fera quand même l'installation, n'est-ce pas?
Sam Brightman
Oui, ont 100% raison. Cela doit être fait dans une autre instance (développement).
estibordo
1

Non, vous ne pouvez pas exécuter une partie d'un script de maintenance, il n'y a pas de hook pour y arriver.

Vous ne pouvez voir ce que le script ferait en l'examinant à la main - là encore, aucun "essai à blanc" ne peut vous dire exactement ce qu'il fera ou ne fera pas, seulement "je vais exécuter le postinst avec ces arguments".

Ce sont les raisons pour lesquelles nous avons des environnements de test et de transfert.

femme
la source
Je voulais dire un sous-ensemble des scripts, pas partie d'un script individuel. Désolé si ce n'était pas clair. Je ne veux pas de magie, connaître le script et les arguments me permet d’inspecter à la main ou de modifier les parties qui dérangent.
Sam Brightman