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