Ich habe kürzlich damit begonnen, einen Teil meiner Software zu packen und auf Launchpad zu veröffentlichen. Das Installieren und Entfernen funktioniert gut, aber das Upgraden des Pakets von einer Version auf die nächste Version ist problematisch.
Das Problem ist, dass es einige Skripte gibt, die nur während der ersten Installation des Pakets ausgeführt werden müssen. Diese Skripte füllen die DB, erstellen einen Benutzer usw. Sie werden derzeit in der package.postinst configure)
aufgerufen Sektion. Dies führt jedoch dazu, dass sie während eines Upgrades genauso aufgerufen werden wie im Diagramm dargestellt.
Gibt es eine Möglichkeit, ein Betreuerskript in ein .deb-Paket aufzunehmen, das nur während der ersten Installation des Pakets und nicht während eines Upgrades ausgeführt wird? Oder was wäre ein eleganter Weg, einige anfängliche Setup-Skripte in ein .deb-Paket aufzunehmen?
Akzeptierte Antwort:
Mit einem debian/preinst
Datei können Sie bei der Installation Aktionen ausführen, aber kein Upgrade.
#!/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
Wie der Name schon sagt, wird dies jedoch ausgeführt, bevor Ihr Paket installiert wird. Daher können Sie hier möglicherweise nicht das tun, was Sie brauchen. Die meisten Pakete testen einfach in der Konfigurationsphase von postinst
wenn der Benutzer bereits erstellt wurde. Hier ist 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