GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Comment exécuter un script uniquement lors de la première installation d'un package et non lors des mises à niveau ?

J'ai récemment commencé à regrouper certains de mes logiciels et à les publier sur Launchpad. L'installation et la suppression fonctionnent correctement, mais la mise à niveau du package d'une version à la suivante est problématique.

Le problème est que certains scripts ne doivent être exécutés que lors de la première installation du package. Ces scripts remplissent la base de données, créent un utilisateur, etc. Ils sont actuellement appelés dans le package.postinst configure) section. Cependant, cela se traduit par leur appel lors d'une mise à niveau, comme indiqué dans le diagramme.

Existe-t-il un moyen d'inclure un script de responsable dans un package .deb qui ne s'exécute que lors de la première installation du package et non lors d'une mise à niveau ? Ou quelle serait une manière élégante d'inclure des scripts de configuration initiale dans un package .deb ?

Réponse acceptée :

Avec un debian/preinst fichier, vous pouvez effectuer des actions lors de l'installation mais pas de la mise à niveau.

#!/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

Bien que, comme son nom l'indique, cela soit exécuté avant l'installation de votre package. Vous ne pourrez donc peut-être pas faire ce dont vous avez besoin ici. La plupart des packages testent simplement dans l'étape de configuration du postinst si l'utilisateur a déjà été créé. Voici 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. Comment installer et utiliser Snap Package Manager sur Ubuntu 20.04

  2. Comment installer Termite ?

  3. Comment exécuter le script après la reprise et après le déverrouillage de l'écran ?

  4. Comment exécuter un script ? ?

  5. Comment installer Docker et exécuter des conteneurs Docker dans Ubuntu

Comment créer et exécuter un script shell dans Debian 10

Comment créer et exécuter un script Shell dans CentOS 8

Comment installer et exécuter Opera Browser via Snap sur Ubuntu

Comment installer et configurer XAMPP sur Ubuntu Linux

Comment installer et configurer Nagios dans Ubuntu Linux

Comment créer et exécuter un script shell dans Ubuntu 22.04