¿Cuál es el efecto de que los scripts rpm devuelvan 1?

¿Cuál es el efecto de que los scripts rpm devuelvan 1?

Según la documentación de RPM, el%pre,%correo,% preuny%postunscriptlets debe devolver 0 para que continúe la (des)instalación.

(1)Pero, ¿cuál es el efecto de que uno de esos scriptlets devuelva un valor distinto de cero?

(2)¿Se deshará la operación realizada hasta el momento, dejando el sistema como estaba antes de invocar la (des)instalación de RPM?

(3)¿Está involucrado el mecanismo de transacción?

Revisé la documentación (en muchas páginas, incluido el documento oficial de Fedora) pero no encontré ninguna pista (al menos nada "negro sobre blanco", según tengo entendido).

Respuesta1

La información que he encontrado proviene de Error de sombrero rojo 216221 de noviembre de 2006. No sé si el siguiente texto sigue siendo válido.

La última entrada del post dice:

  • Los scriptlets %pre y %preun que salen con código distinto de cero hacen que la instalación/borrado falle como antes. Este comportamiento debe conservarse ya que varios paquetes lo utilizan para evitar la instalación/desinstalación en algunas condiciones.
  • El código de salida distinto de cero de otros scriptlets se trata solo como una advertencia (es decir, si %postun falla registrará una advertencia, pero el paquete se eliminará de todos modos)
  • Los scriptlets que mueren debido a señales y otras formas "anormales" todavía se tratan como errores.
  • para todos los errores de scriptlet, se envía una notificación RPMCALLBACK_SCRIPT_ERROR a la devolución de llamada, con la etiqueta del script fallido pasada en el parámetro "cantidad" y el parámetro "total" que contiene RPMRC_OK / RPMRC_FAIL para indicar si rpm lo trató como una advertencia o un error.

Respuesta2

Solo tengo respuestas parciales, pero espero que te ayude en el camino...

  1. La instalación será considerada.fallido, pero afaik no hay ningún impacto real: los archivos seguirán presentes en su sistema, etc. Sin embargo, tuve problemas para eliminar un paquete en el que %preunfalló el scriptlet.
  2. No se deshacen operaciones. rpmNo puedo saber mágicamente cómo deshacer los comandos que pones en tus scriptlets.
  3. Realmente no sé si está involucrado el mecanismo de transacción. Podrías realizar algunas pruebas para eso: instalar un buen rpm y uno con un %postscript roto...

información relacionada