Script de instalación previa del mantenedor del paquete `instalar` vs `actualizar`

Script de instalación previa del mantenedor del paquete `instalar` vs `actualizar`

Según el paquete Debiandocumentación del script de mantenimiento, el script de preinstalación se puede llamar con el argumento installo con el upgradeprimero:

El preinstscript se puede llamar de las siguientes maneras:

  • new-preinstinstalar
  • new-preinstinstalarversión antigua nueva versión
  • new-preinstmejoraversión antigua nueva versión

¿Cuál es la diferencia entre install old-version new-versiony upgrade old-version new-version? La primera forma (solo install) parece clara, pero no entiendo la diferencia entre instally upgradedónde también se especifican los números de versión antiguos y nuevos.

Respuesta1

Esto se explica enla sección “detalles”:

  • si el paquete ya está completamente instalado, preinstse llama con upgradelas versiones antigua y nueva;
  • si el paquete se instaló anteriormente y todavía tiene sus archivos de configuración (está en estado "Config-Files",es deciraparece como rcen dpkg -lla salida de), preinstse llama con installlas versiones antigua y nueva;
  • si el paquete se está instalando recientemente o se eliminó previamente, preinstse llama installsin información de versión.

Dado que preinstse ejecuta antes de la fase de descomprimir, upgradeindica que hay disponible una versión anterior del contenido del paquete, mientras que installindica que no hay ninguna versión del contenido del paquete (aparte de los archivos de configuración). Por otra parte, si se proporciona información de la versión, eso indica que es posible que sea necesario manejar archivos de configuración.

No hay muchos escenarios en los que la diferencia entre upgradey installsea significativa, pero uno que me viene a la mente es el de las actualizaciones que implican la exportación de datos. Por ejemplo, en upgrademodo,slapd's preinstexporta sus bases de datos; no puede hacerlo en installmodo porque no están presentes las herramientas adecuadas.

Respuesta2

Considerar:

  1. Instala el paquete A, versión x.
  2. Elimina el paquete A, pero sin purgarlo, por lo que permanecen los archivos, usuarios, grupos, etc.
  3. Instala el paquete A, versión y.

Ahora los scripts de mantenimiento necesitan manejar estos archivos de configuración, usuarios, grupos, etc., aunque estrictamente hablando, no estás actualizando, sino simplemente instalando. Puedes ver esto en el segundo diagrama de flujo aquí:"Instalando un paquete que fue previamente eliminado, pero no eliminado"

información relacionada