GNU/Linux >> Tutoriales Linux >  >> Ubuntu

¿Cómo ejecutar un script solo durante la primera instalación de un paquete y no durante las actualizaciones?

Recientemente comencé a empaquetar parte de mi software y publicarlo en Launchpad. La instalación y eliminación funciona bien, pero actualizar el paquete de una versión a la siguiente es problemático.

El problema es que hay algunos scripts que solo necesitan ejecutarse durante la primera instalación del paquete. Estos scripts llenan la base de datos, crean un usuario, etc. Actualmente se les llama en el paquete.postinst configure) sección. Sin embargo, esto hace que se les llame durante una actualización, como se muestra en el diagrama.

¿Hay alguna forma de incluir un script de mantenimiento en un paquete .deb que solo se ejecute durante la primera instalación del paquete y no durante una actualización? ¿O cuál sería una forma elegante de incluir algunos scripts de configuración inicial en un paquete .deb?

Respuesta aceptada:

Con un debian/preinst puede realizar acciones en la instalación pero no en la actualización.

#!/bin/sh
set -e

case "$1" in
    install)
        # do some magic
        ;;

    upgrade|abort-upgrade)
        ;;

    *)
        echo "postinst called with unknown argument `$1'" >&2
        exit 0
        ;;
esac

#DEBHELPER#

exit 0

Aunque como su nombre lo indica, esto se ejecuta antes de que se instale su paquete. Por lo tanto, es posible que no pueda hacer lo que necesita aquí. La mayoría de los paquetes simplemente prueban en la etapa de configuración del postinst si el usuario ya ha sido creado. Aquí está colord

$ cat  /var/lib/dpkg/info/colord.postinst
#!/bin/sh

set -e

case "$1" in
    configure)

# create colord group if it isn't already there
    if ! getent group colord >/dev/null; then
            addgroup --quiet --system colord
    fi

# create the scanner group if it isn't already there
    if ! getent group scanner >/dev/null; then
        addgroup --quiet --system scanner
    fi

# create colord user if it isn't already there
    if ! getent passwd colord >/dev/null; then
            adduser --system --ingroup colord --home /var/lib/colord colord 
        --gecos "colord colour management daemon"
        # Add colord user to scanner group
        adduser --quiet colord scanner
    fi

# ensure /var/lib/colord has appropriate permissions
    chown -R colord:colord /var/lib/colord

    ;;
esac    



exit 0

Ubuntu
  1. Cómo instalar y usar Snap Package Manager en Ubuntu 20.04

  2. ¿Cómo instalar termitas?

  3. ¿Cómo ejecutar el script después de reanudar y después de desbloquear la pantalla?

  4. ¿Cómo ejecutar un script?

  5. Cómo instalar el paquete RPM durante la instalación Kickstart

Cómo crear y ejecutar un script de Shell en Debian 10

Cómo crear y ejecutar un script de Shell en CentOS 8

Cómo instalar y ejecutar Opera Browser a través de Snap en Ubuntu

Cómo instalar y configurar XAMPP en Ubuntu Linux

Cómo instalar y configurar Nagios en Ubuntu Linux

Cómo crear y ejecutar un script de shell en Ubuntu 22.04