Grilling: Package ownership + ADR 0004 amendment #40
Notifications
Due Date
No due date set.
Blocks
Depends on
#42 Task: Compose release spec + ADR amending 0004
xavierk/Fenris
#38 Grilling: Lock channel + toolchain
xavierk/Fenris
Reference: xavierk/Fenris#40
Reference in New Issue
Block a user
Parent map: Fenris deb + rpm release plan
Question
Define dpkg/rpm ownership: file lists for the /opt/fenris venv, helpers, units, polkit policy; /etc/fenris conffile semantics; fenris group creation (maintainer script vs sysusers.d/tmpfiles.d); dormant-install parity (never enable/start units); uninstall vs purge mapping against the old manifest model; postinst inheriting ADR 0004 snapshot + forward-only migration semantics. Output: ADR amendment outline.
Resolution
All 8 recommendations accepted. Package ownership decisions:
/etcstays admin-only for drop-ins + enable-state). Dormant parity: postinst doesdaemon-reloadonly — never enable, never preset, never start; no preset file shipped.fenrisgroup via /usr/lib/sysusers.d/fenris.conf (g fenris -) + explicitsystemd-sysusersinvocation in postinst/%post — declarative, immediate on all four matrix targets (systemd ≥ 249 everywhere).d /var/lib/fenris 2750 root fenris -) +systemd-tmpfiles --createin postinst. Package owns the directory only (deb%dir/ rpm%dir);observations.db, WAL sidecars,.baknever owned, never ghosted (rpm ghost-erase would kill the store — violates uninstall-keeps-store)..rpmsave.make installkeeps /usr/local/bin. Coexistence handling deferred to "Grilling: Migration path from make-install systems to packages" (#41).remove≈ make uninstall; debpurge≈ make purge (+.bak, groupdel); rpm erase ≈ make uninstall, purge = documented manual command. prerm/%preun: sanctioned disable (fenris-monitor disable --now→ closes perioduser_disabled) on remove/erase only — never on upgrade (deb prerm upgrade-case is a no-op; rpm %preun gated on$1 -eq 0).observations.db→.bak(one generation) → forward-only migration via inline/opt/fenris/bin/python3 -c "…migrate_to_latest…"(same shape asmake upgrade, zero new polkit-reachable binaries — /usr/libexec/fenris stays exactly fenris-monitor + fenris-collect) →daemon-reload→ restartfenris-collect.timeronly if unit contents changed AND active. Install case:daemon-reloadonly.fenris import <path>is the only import path; ADR 0004 §5 auto-detect scope narrowed tomake install.The hand-rolled
/var/lib/fenris/manifest.txtmodel is retired: ownership is the dpkg/rpm DB; manifest never ships; leftover-manifest cleanup on make-install→package upgrade belongs to "Grilling: Migration path from make-install systems to packages" (#41).ADR 0004 amendment outline (input to "Task: Compose release spec + ADR amending 0004" (#42))
make installdemoted to dev fallback./usr/lib/systemd/system; manifest model removed (dpkg/rpm DB is the manifest); add sysusers.d + tmpfiles.d fragments; wrapper/usr/bin/fenrisfor packages.daemon-reloadonly, no enable/preset/start.make installonly.daemon-reload+ conditional timer restart (deb postinst / rpm %post).noreplaceon both formats.Open item for spec composition (#42), not this ticket: the conffile initial-write mechanism (root-owned
/etc/fenris/fenris.conf— who writes the device selector, given ADR 0003 lists no config verb onfenris-monitor) predates this map; verify during composition.