Migrating remaining System V scripts to systemd services

What’s happening?

There are still packages in Ubuntu which ship System V init scripts, but not a systemd service. These packages need to provide a systemd service for Ubuntu 26.10.

Why is this happening now?

Up to and including Ubuntu 26.04 LTS, the systemd package shipped systemd-sysv-generator which generated basic systemd services from legacy System V scripts in /etc/init.d on the fly. This generator was removed from upstream systemd in version v260, and will not be shipped in Ubuntu 26.10.

What about Debian?

There was a mass-bug-filing in Debian for this a couple of years ago when the generator was deprecated, so many packages have already been updated. Further, there is a lintian tag that warns about this.

However, Debian has more time before Forky to migrate remaining System V scripts, so we need to help move things along this cycle.

What do I need to do?

To get started, I have created Launchpad bugs tagged “missing-systemd-service” for affected packages. Where possible, these link to the corresponding Debian bug.

If you or your team maintains an affected package, please ensure this is taken care of this cycle. Most affected packages are in universe and may be good items to work on during +1 maintenance as well.

When is systemd-sysv-generator being removed from Ubuntu?

I plan to upload a new upstream version of systemd in the next few weeks, and the generator will be dropped at that time.

9 Likes

And while you’re at it, can you see to it that Type=forking be eradicated? Looking at you, apache2.service, to name but one example. As a matter of fact, I have hacked that service unit, which ships with 24.04, so my local Apache instance runs as Type=exec. But bringing up Apache is an art of its own, as it seems; I needed to look at some of the helper scripts to make my overrides work and found the way how instances are managed looked an awful lot like systemd template units fit that bill perfectly. I must say, though, that my use case only requires Apache for dwww, so I can only point to it as a PoC.

I get it, it’s really easy to just run the init.d scripts’ start|stop actions and call that a forking service, but forking services only exist as an ugly hack to work around the limitations of System V init. They belong on the scrap heap of stopgaps that stuck around far too long.

I can lend a hand, if you want.