GNU/Linux >> Belajar Linux >  >> Ubuntu

Bagaimana Cara Menjalankan Script Hanya Selama Instalasi Pertama Paket Dan Tidak Selama Peningkatan?

Saya baru-baru ini mulai mengemas beberapa perangkat lunak saya dan menerbitkannya di Launchpad. Penginstalan dan penghapusan berfungsi dengan baik, tetapi memutakhirkan paket dari satu versi ke versi berikutnya bermasalah.

Masalahnya adalah ada beberapa skrip yang hanya perlu dijalankan pada saat instalasi pertama paket. Skrip ini mengisi DB, membuat pengguna, dll. Saat ini skrip ini dipanggil dalam configure) package.postinst bagian. Namun hal ini menyebabkan mereka dipanggil selama peningkatan serta seperti yang ditunjukkan dalam diagram.

Apakah ada cara untuk menyertakan skrip pengelola dalam paket .deb yang hanya dijalankan selama instalasi pertama paket dan tidak selama peningkatan? Atau apa cara yang elegan untuk menyertakan beberapa skrip penyiapan awal dalam paket .deb?

Jawaban yang Diterima:

Dengan debian/preinst file Anda dapat melakukan tindakan saat menginstal tetapi tidak meningkatkan.

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

Meskipun seperti namanya, ini dijalankan sebelum paket Anda diinstal. Jadi Anda mungkin tidak dapat melakukan apa yang Anda butuhkan di sini. Sebagian besar paket hanya menguji di tahap konfigurasi postinst jika pengguna telah dibuat. Ini 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. Bagaimana Cara Memasang Rayap?

  2. Bagaimana Cara Menjalankan Script Setelah Lanjutkan Dan Setelah Membuka Kunci Layar?

  3. Cara Menginstal Docker dan Menjalankan Wadah Docker di Ubuntu

  1. Cara Menginstal dan Menggunakan Snap Package Manager di Ubuntu 20.04

  2. Cara Menginstal dan Menjalankan Python di CentOS 8

  3. Cara Menginstal Paket RPM Selama Instalasi Kickstart

  1. Cara menginstal Chef Server, Workstation dan Chef Client di Ubuntu 18.04

  2. Bagaimana Menjalankan Skrip??

  3. Cara menjalankan perintah "find" hanya pada direktori saat ini dan bukan pada sub-direktori