favoritter/dist/postinstall.sh
Ole-Morten Duesund 3341e9a818 fix: preserve systemd enable/disable state on package upgrade
The preremove script was unconditionally stopping and disabling the
service, which meant upgrades (dpkg -i new.deb) would disable the
service. Users had to manually re-enable after every upgrade.

Now:
- preremove: only stop+disable on actual removal (not upgrade)
  Checks $1 for "remove"/"purge" (deb) or "0" (rpm)
- postinstall: restart the service on upgrade if it was running,
  preserving enable/disable state. Only shows first-install
  instructions on initial install.

Tested with shellcheck.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 19:26:29 +02:00

39 lines
1.4 KiB
Bash
Executable file

#!/bin/sh
# Post-install script for Favoritter .deb/.rpm package.
# Creates the system user, sets directory permissions, and handles upgrades.
#
# Debian/Ubuntu: called with "configure" on install/upgrade.
# RPM: called with 1 on first install, 2+ on upgrade.
set -e
# Create system user if it doesn't exist.
if ! getent passwd favoritter >/dev/null 2>&1; then
useradd -r -s /usr/sbin/nologin -d /var/lib/favoritter favoritter
fi
# Ensure data directories exist with correct ownership.
install -d -o favoritter -g favoritter -m 0750 /var/lib/favoritter
install -d -o favoritter -g favoritter -m 0750 /var/lib/favoritter/uploads
# Reload systemd to pick up any service file changes.
if command -v systemctl >/dev/null 2>&1; then
systemctl daemon-reload
# On upgrade: restart the service if it was running.
# This picks up the new binary without losing enable/disable state.
if systemctl is-active --quiet favoritter 2>/dev/null; then
systemctl restart favoritter
fi
fi
# Only show the setup message on first install (not upgrades).
action="${1:-}"
case "$action" in
# Debian first install or RPM first install ($1=1).
configure|1)
if ! systemctl is-enabled --quiet favoritter 2>/dev/null; then
echo "Favoritter installed. Configure /etc/favoritter/favoritter.env then run:"
echo " sudo systemctl enable --now favoritter"
fi
;;
esac