Skip to content

Add procps to fix ps: command not found during self-update - #27

Merged
decriptor merged 1 commit into
mainfrom
fix/rrd-1551-add-procps
May 29, 2026
Merged

Add procps to fix ps: command not found during self-update#27
decriptor merged 1 commit into
mainfrom
fix/rrd-1551-add-procps

Conversation

@decriptor

Copy link
Copy Markdown
Collaborator

Summary

  • Adds the procps package to the RoonServer Docker image runtime dependencies, providing ps.
  • Fixes the self-update failure where the stock RoonServer launcher aborted with ps: command not found (line 56) while killing stale RAATServer processes.

Background

The bundled RoonServer launcher (downloaded at runtime, not part of this repo) runs:

for i in $(ps -Awwo pid,args | grep '[R]AATServer' | awk '{print $1}'); do kill -9 $i; done

The base debian:trixie-slim image has no ps, so the update flow failed. Since we don't control that script, we can't refactor it to pkill — the correct fix is to provide a real ps. The healthcheck continues to read /proc directly and does not depend on procps.

Test plan

  • docker build succeeds with the change
  • ps resolves to /usr/bin/ps (procps-ng 4.0.4) in the built image
  • The exact update pipeline ps -Awwo pid,args | grep '[R]AATServer' | awk '{print $1}' runs with exit 0

Fixes RRD-1551

Copilot AI review requested due to automatic review settings May 28, 2026 16:43

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR adds procps to the RoonServer Docker image so the bundled RoonServer self-update launcher can call ps successfully.

Changes:

  • Adds a runtime dependency comment explaining why procps is needed.
  • Installs procps with the existing Debian runtime package set.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread Dockerfile
The official RoonServer Docker image was missing the procps package,
so the stock RoonServer self-update launcher failed at line 56 with
"ps: command not found" while killing stale RAATServer processes:

  for i in $(ps -Awwo pid,args | grep '[R]AATServer' | awk '{print $1}'); do kill -9 $i; done

That script is bundled with RoonServer and downloaded at runtime, so we
can't refactor it to pkill — the fix is to provide a real ps by adding
procps to the runtime dependencies. The healthcheck still reads /proc
directly and does not depend on procps.

Also assert the ps runtime contract in tests/smoke.sh so a future
dependency change can't silently drop procps and reintroduce this bug:
one check that ps exists, and one that `ps -Awwo pid,args` (the exact
flags the launcher uses) executes. The invocation check asserts ps's own
exit code rather than piping through grep|awk, whose exit would be 0 even
if ps were missing.

Verified in a built image: ps resolves to /usr/bin/ps (procps-ng 4.0.4),
the pipeline runs, and the full smoke suite passes (58/0).

Fixes RRD-1551
@decriptor
decriptor force-pushed the fix/rrd-1551-add-procps branch from c9f5ecd to dbdc7dd Compare May 28, 2026 17:15

@stevebecker-roon stevebecker-roon left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good, note regarding platform is a good note for when we support other platforms.

@decriptor
decriptor merged commit 74af397 into main May 29, 2026
2 checks passed
@decriptor
decriptor deleted the fix/rrd-1551-add-procps branch May 29, 2026 00:35
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.

3 participants