package update
build-and-publish / build (Raccoon, ubuntu:26.04, NEXUS_PASS_RACCOON, NEXUS_REPO_RACCOON, NEXUS_USER_RACCOON, raccoon) (push) Successful in 3m33s
build-and-publish / build (Trixie, debian:13, NEXUS_PASS_TRIXIE, NEXUS_REPO_TRIXIE, NEXUS_USER_TRIXIE, trixie) (push) Successful in 3m19s

This commit is contained in:
theraw
2026-06-09 05:11:17 +00:00
parent 6dfd126a85
commit f77d853118
3 changed files with 63 additions and 27 deletions
+26 -16
View File
@@ -1,20 +1,35 @@
#!/bin/sh
# postinst — shared by the twiy and twiy-raweb packages.
#
# Pristine configs and the default site ship under /usr/share/twiy/defaults
# (owned/tracked by dpkg), NOT under the live /nginx and /hostdata trees. We
# seed the live trees from the stash here:
# - target missing -> install the packaged copy
# - target present -> leave it untouched; drop our copy as <file>.new
# Because dpkg does not track the live files, an install or upgrade never
# overwrites a config the admin has edited (e.g. you get nginx.conf.new, not a
# clobbered nginx.conf).
# Config files live under /nginx but are NOT tracked by dpkg. The package
# ships an empty /nginx skeleton (so dpkg keeps the dirs across upgrades) plus
# a pristine copy of every config under /usr/share/twiy/defaults/nginx. We
# place configs from that stash here and NEVER overwrite a file that already
# exists — our copy is dropped beside it as <file>.new instead (e.g.
# nginx.conf.new). An upgrade therefore never changes an admin-edited config.
#
# /hostdata is left entirely to the admin: we only make sure the dir exists,
# and we never touch or remove its contents.
set -e
# nginx runtime user (idempotent).
useradd -r -s /bin/false nginx 2>/dev/null || true
# Existing dirs are left exactly as they are (mkdir -p is a no-op then).
mkdir -p /nginx /hostdata
# Migration: older releases shipped /nginx/* as dpkg-tracked files, so the
# upgrade unpack deletes them before this script runs. preinst stashed a copy
# first — restore it now, without clobbering anything already present.
if [ -d /var/backups/twiy-nginx ]; then
cp -an /var/backups/twiy-nginx/. /nginx/ 2>/dev/null || true
rm -rf /var/backups/twiy-nginx
fi
# Seed packaged defaults:
# - target absent -> install it
# - target present, differs -> keep theirs, drop ours as <file>.new
# - target present, same -> do nothing
seed_tree() {
stash="$1"
target="$2"
@@ -24,21 +39,16 @@ seed_tree() {
dst="$target/$rel"
install -d "$(dirname "$dst")"
if [ -e "$dst" ]; then
cp -p "$src" "$dst.new" # keep admin's file; offer ours as .new
cmp -s "$src" "$dst" || cp -p "$src" "$dst.new"
else
cp -p "$src" "$dst"
fi
done
}
seed_tree /usr/share/twiy/defaults/nginx /nginx
seed_tree /usr/share/twiy/defaults/nginx /nginx
seed_tree /usr/share/twiy/defaults/hostdata /hostdata
# Empty include dirs referenced by nginx.conf (`include conf.d/*;`) that ship
# with no files of their own.
install -d /nginx/conf.d /nginx/config
install -d -o nginx -g nginx -m 0755 /var/log/nginx
chown -R nginx:nginx /var/log/nginx /nginx 2>/dev/null || true
systemctl daemon-reload 2>/dev/null || true
+18
View File
@@ -0,0 +1,18 @@
#!/bin/sh
# preinst — shared by the twiy and twiy-raweb packages.
#
# Older releases shipped /nginx as dpkg-tracked files. When upgrading from one
# of those, dpkg deletes the old /nginx/* files during unpack (they are no
# longer part of the package) BEFORE postinst runs. Stash a copy of the live
# config tree first so postinst can restore any admin-edited config and it
# survives the migration. Never touched on a fresh install.
set -e
if [ "$1" = upgrade ] && [ -d /nginx ]; then
rm -rf /var/backups/twiy-nginx
mkdir -p /var/backups
cp -a /nginx /var/backups/twiy-nginx
fi
exit 0