Package: init-system-helpers
Version: 1.69+nmu1
 
Severity: serious
Justification: non-declared dependency; fails on systemd upgrades if procps is 
missing

Dear Maintainer,

I have been see has been causing this issue all over jobs on Debian
CI: when upgrading from testing, it causes the apt upgrade to fail like
this:

----------------8<----------------8<----------------8<-----------------
Setting up systemd (262~rc1-2) ...
Can't exec "kill": No such file or directory at /usr/bin/deb-systemd-invoke 
line 179.
Job for systemd-journald.service failed because the control process exited with 
error code.
See "systemctl status systemd-journald.service" and "journalctl -xeu 
systemd-journald.service" for details.
Job for systemd-networkd.service failed because the control process exited with 
error code.
See "systemctl status systemd-networkd.service" and "journalctl -xeu 
systemd-networkd.service" for details.
Setting up systemd-resolved (262~rc1-2) ...
Could not execute systemctl:  at /usr/bin/deb-systemd-invoke line 148.
----------------8<----------------8<----------------8<-----------------

I can reproduce this locally with autopkgtest, like this:

autopkgtest --no-built-binaries --apt-upgrade --add-apt-release=unstable 
--pin-packages=unstable=src:systemd debian-security-support  -- incus 
autopkgtest/debian/testing/arm64

This is caused by an implicit dependeny on procps (for /usr/bin/kill).
The code around deb-systemd-invoke line 179 is:

178     if ($is_system) {
179         system('kill', '-s', $signal, '1');
180     } else {
181         system('systemctl', '--quiet', 'kill', '--kill-whom=main', 
'--signal', $signal, 'user@*.servic    e');
182     }

The attached patch (against git master) fixes the issue, i.e. if I have
the package with this patch installed, then upgrading systemd works.
From 9ef0e143ee5a68620f2bb98e68e6c3ee037620b3 Mon Sep 17 00:00:00 2001
From: Antonio Terceiro <[email protected]>
Date: Sat, 5 Sep 2026 13:46:50 -0300
Subject: [PATCH] deb-systemd-invoke: don't assume `kill` is available

/usr/bin/kill is provided by procps, which is not a dependency, and
might not be installed. For example, recent Debian CI containers do not
include `procps`, and this revealed an implicit dependency in procps by
init-system-helpers.

Given Perl has a kill() function, we can just use that instead of
shelling out to /usr/bin/kill.
---
 script/deb-systemd-invoke | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/script/deb-systemd-invoke b/script/deb-systemd-invoke
index c94d47a..adfac93 100755
--- a/script/deb-systemd-invoke
+++ b/script/deb-systemd-invoke
@@ -371,7 +371,7 @@ sub reload_reexec_signal {
     }
 
     if ($is_system) {
-        system('kill', '-s', $signal, '1');
+        kill($signal, 1);
     } else {
         system('systemctl', '--quiet', 'kill', '--kill-whom=main', '--signal', $signal, 'user@*.service');
     }
-- 
2.53.0

Attachment: signature.asc
Description: PGP signature

Reply via email to