GNU/Linux >> LINUX-Kenntnisse >  >> Ubuntu

Wie führe ich ein Skript nur während der Erstinstallation eines Pakets und nicht während Upgrades aus?

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

Ubuntu
  1. So installieren und verwenden Sie den Snap Package Manager unter Ubuntu 20.04

  2. So installieren und führen Sie Python unter CentOS 8 aus

  3. Wie installiere ich Termite?

  4. Wie führe ich ein Skript nach dem Fortsetzen und nach dem Entsperren des Bildschirms aus?

  5. So führen Sie den Befehl „find“ nur im aktuellen Verzeichnis und nicht in Unterverzeichnissen aus

So erstellen und führen Sie ein Shell-Skript in Debian 10 aus

So erstellen und führen Sie ein Shell-Skript in CentOS 8 aus

So installieren und starten Sie Opera Browser über Snap auf Ubuntu

So installieren und konfigurieren Sie XAMPP unter Ubuntu Linux

So installieren und konfigurieren Sie Nagios unter Ubuntu Linux

So erstellen und führen Sie ein Shell-Skript in Ubuntu 22.04 aus