GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Come eseguire uno script solo durante la prima installazione di un pacchetto e non durante gli aggiornamenti?

Di recente ho iniziato a impacchettare parte del mio software e pubblicarlo su Launchpad. L'installazione e la rimozione funzionano correttamente, ma l'aggiornamento del pacchetto da una versione alla versione successiva è problematico.

Il problema è che ci sono alcuni script che devono essere eseguiti solo durante la prima installazione del pacchetto. Questi script popolano il DB, creano un utente, ecc. Attualmente sono chiamati in package.postinst configure) sezione. Tuttavia, ciò comporta la loro chiamata durante un aggiornamento così come mostrato nel diagramma.

C'è un modo per includere uno script di manutenzione in un pacchetto .deb che viene eseguito solo durante la prima installazione del pacchetto e non durante un aggiornamento? O quale sarebbe un modo elegante per includere alcuni script di configurazione iniziale in un pacchetto .deb?

Risposta accettata:

Con un debian/preinst è possibile eseguire azioni durante l'installazione ma non l'aggiornamento.

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

Anche se, come suggerisce il nome, viene eseguito prima dell'installazione del pacchetto. Quindi potresti non essere in grado di fare ciò di cui hai bisogno qui. La maggior parte dei pacchetti testa semplicemente nella fase di configurazione di postinst se l'utente è già stato creato. Ecco 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. Come installare e utilizzare Snap Package Manager su Ubuntu 20.04

  2. Come installare la termite?

  3. Come eseguire lo script dopo il ripristino e dopo lo sblocco dello schermo?

  4. Come eseguire uno script??

  5. Come installare il pacchetto RPM durante l'installazione kickstart

Come creare ed eseguire uno script di shell in Debian 10

Come creare ed eseguire uno script di shell in CentOS 8

Come installare ed eseguire Opera Browser tramite Snap su Ubuntu

Come installare e configurare XAMPP su Ubuntu Linux

Come installare e configurare Nagios in Ubuntu Linux

Come creare ed eseguire uno script di shell in Ubuntu 22.04