GNU/Linux >> Znalost Linux >  >> Ubuntu

Jak spustit skript pouze během první instalace balíčku a ne během upgradů?

Nedávno jsem začal balit nějaký svůj software a publikovat ho na Launchpadu. Instalace a odstranění funguje dobře, ale upgrade balíčku z jedné verze na další je problematický.

Problém je v tom, že existují některé skripty, které je třeba spustit pouze při první instalaci balíčku. Tyto skripty naplňují DB, vytvářejí uživatele atd. Momentálně se nazývají v package.postinst configure) sekce. To však vede k tomu, že jsou volány během upgradu, stejně jako jsou zobrazeny v diagramu.

Existuje způsob, jak zahrnout skript pro údržbu do balíčku .deb, který se spustí pouze během první instalace balíčku a ne během upgradu? Nebo jaký by byl elegantní způsob, jak zahrnout některé skripty počátečního nastavení do balíčku .deb?

Přijatá odpověď:

S debian/preinst můžete provádět akce při instalaci, ale ne upgradovat.

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

Ačkoli jak název napovídá, toto se spustí před instalací vašeho balíčku. Takže zde možná nebudete moci dělat to, co potřebujete. Většina balíčků jednoduše testuje ve fázi konfigurace postinst pokud byl uživatel již vytvořen. Zde je 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. Jak nainstalovat Termite?

  2. Jak spustit skript po obnovení a po odemknutí obrazovky?

  3. Jak spustit skript??

  1. Jak nainstalovat a používat Snap Package Manager na Ubuntu 20.04

  2. Jak nainstalovat Docker a spustit kontejnery Docker v Ubuntu

  3. Jak spustit příkaz „najít“ pouze v aktuálním adresáři a ne v podadresářích

  1. Jak nainstalovat Chef Server, Workstation a Chef Client na Ubuntu 18.04

  2. Jak nainstalovat a spustit Python na CentOS 8

  3. Jak nainstalovat balíček RPM během instalace Kickstart