¿Cómo muestro las acciones que llevará a cabo la instalación de un paquete .deb?

33

Me gustaría poder ver las secuencias de comandos / disparadores asociados con un paquete que se debe actualizar para poder decir, por ejemplo, si el servidor web se reiniciará. No puedo encontrar una opción de aptitud para mostrarme eso (o apt / dpkg); lo mejor que puedo obtener es el contenido (archivos). ¿Hay alguna combinación de simuladores / verbosos / contenidos que me haya perdido que muestre esto?

Además, si un paquete resulta en algo que sucede, como un reinicio del servicio, que no quiero que ocurra en este momento, ¿hay alguna forma de instalar el paquete sin ejecutar algunos o todos los scripts?

Sam Brightman
fuente
¿Por qué fue rechazado? Me parece una pregunta razonable (aunque hacer algo como esto normalmente no debería ser necesario).
sleske
1
Me gana No hay comentarios o respuestas particularmente abrasivos, solo votos negativos al azar. Como si "normalmente no se debe hacer" es lo mismo que "nunca se debe hacer bajo ninguna circunstancia y ni siquiera educativo". :(
Sam Brightman

Respuestas:

20

Puede imprimir el archivo de control y alguna otra información con dpkg -I package.deb, o usar dpkg -e package.debpara extraer solo los archivos de información de control.

Además, puede hacer una prueba en seco para ver qué haría dpkg con --dry-run:

dpkg --dry-run -i package.deb
Mikael S
fuente
Debo haber perdido estas opciones, gracias. -Pero no parece mostrar mucho, solo parece la primera línea (interrobang).
Sam Brightman
2
Nota: debe tener el archivo de paquete disponible localmente. Descárguelo primero a través de 'aptitude download <packagename>'.
Martijn Heemels
3
La opción -e creará un DEBIANdirectorio con el controlarchivo y los diversos archivos de script que se ejecutarán. postinstsuele ser muy interesante, ya que se ejecutará después de que el paquete se haya instalado correctamente.
dwurf
8

No, no conozco ninguna forma de hacerlo usando aptitude.

Puedes mirar los guiones directamente; los scripts que se ejecutan durante la actualización están contenidos en el paquete. Descomprima el deb usando ar:

ar -x package.deb

Luego mire control.tar.gz, contiene los guiones.

sleske
fuente
Sería mejor si aptitude -s con algunas opciones de verbosidad realmente mostrara los scripts que se ejecutarían durante toda la actualización. Eso es esencialmente lo que estaba pidiendo, pero creo que la respuesta de Mikael es un poco más simple.
Sam Brightman
2

También existe la --debugopción para dpkg, como ensudo dpkg --debug=72200 -i package.deb

Hay varias opciones disponibles para la salida detallada y se pueden combinar.

Puede ver todas las opciones disponibles ejecutando: 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
fuente
Sin embargo, eso hará la instalación, ¿no?
Sam Brightman
Sí, son 100% correctos. Esto debe hacerse en otra instancia (desarrollo).
estibordo
1

No, no puede ejecutar parte de un script de mantenedor, no hay ganchos para que eso suceda.

Solo puede ver lo que haría el script examinándolo a mano. Una vez más, ninguna "ejecución en seco" puede decirle exactamente qué hará y qué no hará, solo "Ejecutaré la postinst con estos argumentos".

Estas son las razones por las que tenemos entornos de prueba y puesta en escena.

womble
fuente
Me refería a un subconjunto de los guiones, no parte de un guión individual. Lo siento si eso no estaba claro. No quiero magia, conocer el guión y los argumentos me permite inspeccionar a mano o modificar las partes que son inconvenientes.
Sam Brightman