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