Skip to content

core: start and restart a .deb's services after binary mode installs it - #250

Merged
michelroegl-brunner merged 2 commits into
mainfrom
fix/deb-install-service-restart
Nov 13, 2026
Merged

michelroegl-brunner merged 2 commits into
mainfrom
fix/deb-install-service-restart

Conversation

@MickLesk

Copy link
Copy Markdown
Member

✍️ Description

Binary mode installs with SYSTEMD_OFFLINE=1 so systemd-tmpfiles does not fail in unprivileged containers. That also makes the package scripts skip their own service start and restart (systemctl prints "ignoring command"). An upgrade left the old process running on replaced files unless the script restarted it itself, and a fresh install left enabled services stopped (seen with Euro-Office).

After the install core now does what the package would have done: restart the package's units that were running before, and on a fresh install start the ones the package enabled. A unit the script stopped before the update stays stopped, so scripts that stop, update, migrate and then start keep their order. Template units are left alone.

🔗 Related Issue

Fixes #

✅ Prerequisites (X in brackets)

  • Self-review completed – Code follows project standards.
  • Tested thoroughly – Changes work as expected (Proxmox VE and/or Incus, as applicable).
  • No security risks – No hardcoded secrets, unnecessary privilege escalations, or permission issues.
  • API.txt regenerated – If a function signature or behavior changed, API.txt was updated to match.

🛠️ Type of Change (X in brackets)

  • 🐞 Bug fix – Resolves an issue without breaking functionality.
  • ✨ New feature – Adds new, non-breaking functionality.
  • 💥 Breaking change – Alters existing behavior in a way that may require updates in every downstream script.
  • 🔧 Refactoring / Code Cleanup – Improves readability or maintainability without changing functionality.
  • 📝 Documentation update – Changes to README, docs/, CONTRIBUTING.md, or other docs.

🤖 AI Assistance (X in brackets)

If you used an AI tool (GitHub Copilot, Claude, ChatGPT, etc.) to write or generate any code in this PR, you must confirm compliance below.
Select exactly one option.

  • No AI used – Code was written without AI assistance.
  • AI was used – The output has been reviewed and corrected, and I take responsibility for it matching this repo's conventions.

@github-actions

Copy link
Copy Markdown
Contributor

Try this branch

The engine and the scripts resolve independently, so a production script can
be run against the engine from this PR by setting one variable:

COMMUNITY_SCRIPTS_CORE_URL=https://raw.githubusercontent.com/community-scripts/core/fix/deb-install-service-restart \
bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/debian.sh)"

Swap ct/debian.sh for whatever exercises the change.

Run a script from a fork as well
curl -fsSL https://raw.githubusercontent.com/community-scripts/core/fix/deb-install-service-restart/tools/run.sh |
  bash -s -- https://raw.githubusercontent.com/YOU/DevScripts/your-branch ct/debian.sh \
             https://raw.githubusercontent.com/community-scripts/core/fix/deb-install-service-restart

Note that run.sh is reached through a pipe, so the script it starts inherits
an exhausted stdin. Whiptail is fine — it opens /dev/tty — but a plain read
would see EOF. The single-variable form above does not have that problem.

Useful flags while testing

dev_mode=net logs every engine fetch with status and duration, which is the
quickest way to confirm the branch is really being used. dev_mode=keep stops a
failed build from deleting the container along with the evidence.

@michelroegl-brunner
michelroegl-brunner force-pushed the fix/deb-install-service-restart branch from a1b9895 to 0c4a56a Compare November 13, 2026 17:30
Binary mode installs with SYSTEMD_OFFLINE=1 so systemd-tmpfiles does not
fail in unprivileged containers. That also makes the package scripts skip
their own service start and restart (systemctl prints "ignoring command").
An upgrade left the old process running on replaced files unless the
script restarted it itself, and a fresh install left enabled services
stopped (seen with Euro-Office).

After the install core now does what the package would have done: restart
the package's units that were running before, and on a fresh install start
the ones the package enabled. A unit the script stopped before the update
stays stopped, so scripts that stop, update, migrate and then start keep
their order. Template units are left alone.
@michelroegl-brunner
michelroegl-brunner force-pushed the fix/deb-install-service-restart branch from 0c4a56a to 62f39bb Compare November 13, 2026 17:33
@michelroegl-brunner
michelroegl-brunner merged commit 0a3b22c into main Nov 13, 2026
5 checks passed
@github-actions
github-actions Bot deleted the fix/deb-install-service-restart branch November 14, 2026 08:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants