Sergey Ponomarev:
Hi Niels,
I upgraded to Ubuntu 24.04 and now have debhelper 13.14.1ubuntu1.
Hi,
In case you are using Ubuntu, you should be filing the bug against
Ubuntu for future reference. Notably, Ubuntu has patched debhelper and
even monkey-patch(ed?) debhelper in their official builds on top that.
Therefore, they have to screen incoming bug reports first to ensure the
bug is not introduced by their patches.
Once executed the debuild nothing was generated.
When executed the dh_installsystemduser manually also nothing was generated.
From it's sources I found that it looks for some dependency and I added to
the /debian/control:
Depends: ${misc:Depends}
Now this helped and two install/uninstall scripts were generated
/debian/sshtunnel.postinst.debhelper
/debian/sshtunnel.postrm.debhelper
I manually included the scripts to /debian/postinst and /debian/postrm and
built the deb.
If you had to "manually" include those snippets into the deb in a clean
build, then I think there is something seriously wrong with the
packaging. Normally, `dh_installdeb` would do that for you if the
commands are run in the correct sequence.
Now, you mention you ran it manually. So it is possible you did that
manually after building the deb, in which case you would see this
behavior. This would also fit that your `debian/rules` likes quite
standard without any room for mistakes of this kind when I checked it.
It was installed successfully but didn't start the service.
I started manually. During uninstall it has not been stopped. There is no
prerm script that will do that.
No, this feature is first added in compat 14 apparently (which is not
stable yet). Sadly, this is not documented in the upgrade checklist for
reasons I do not understand. The commit that introduced the feature
recorded it in the wrong place and the remark seems to be completely gone.
I will follow up on this part.
So the issues are:
1. The debhelper did not execute the dh_installsystemduser. I guess I must
add it manually to /debian/rules
Either that or you could use the proper debhelper-compat level. That is
compat 12 or later would do. The package you linked to used compat 11 as
I recall.
Remember to check the debhelper compat upgrade checklist before you
update the compat level.
It is in `man 7 debhelper-compat-upgrade-checklist` or `man 7 debhelper`
(depending on the debhelper version).
2. The generated scripts do not start the service after installation.
3. Missing prerm script to stop the service.
As mentioned above, this is compat 14 stuff.
4. Surprising need for for ${misc:Depends}
There is no such need in the Debian version of debhelper for
dh_installsystemduser to generate the snippets. However,
dh_installsystemduser must either install the services files *or* be run
after they are installed at the correct location.
My best guess is that you ran dh_installsystemduser to "early" the
first time, then the files were in place, followed by you tweaking
debian/control and then running dh_installsystemduser without clean
first. That is basically the one way I can make sense of what happened.
That said, you ought have that dependency anyway for other reasons (at
least up to compat 14, where it will be applied automatically).
So far I will anyway continue to use the manual scripts because I wish to
support old distros.
Anyway I wanted to have good and proper "official" scripts to install the
user service.
You can play with my simple package here:
http://github.com/yurt-page/sshtunnel
It can be a good sample and test ground.
Best regards and thank you for your work,
Sergey
[...]
From my PoV, I will acknowledge that the compat checklist is missing
the remark that `dh_installsystemduser` changes behavior in compat 14 by
adding start+stop snippets for user services.
For the other parts, I am not seeing anything that I can be sure is a
bug in debhelper vs. issues caused by ad-hoc debugging / something else.
At least not in Debian's version of debhelper.
Best regards,
Niels
PS: I suspect your `debian/dirs` file is (mostly?) redundant, since your
`Makefile` does the `mkdir -p` necessary.