I have a project.init
file in the debian directory (along with rules
, control
, etc), and I have dh_installinit
in my rules
file (in the binary-arch
rule).
When dpkg-buildpackage
completes, the init script has been copied to debian/project/etc/init.d/project
, and the various pre/post scripts have been created.
However, when I actually install the .deb (with dpkg -i
), the init.d script does not get installed, so I must be missing part of this process. The "New Maintainer's Guide" is pretty sparse on init.d details (it basically says not to use them, because they are too advanced).
The verbose output of the dh_installinit command is:
dh_installinit
install -p -m755 debian/project.init debian/project/etc/init.d/project
echo "# Automatically added by dh_installinit">> debian/project.postinst.debhelper
sed "s/#SCRIPT#/project/;s/#INITPARMS#/defaults/;s/#ERROR_HANDLER#/exit \$?/" /usr/share/debhelper/autoscripts/postinst-init >> debian/project.postinst.debhelper
echo '# End automatically added section' >> debian/project.postinst.debhelper
echo "# Automatically added by dh_installinit">> debian/project.prerm.debhelper
sed "s/#SCRIPT#/project/;s/#INITPARMS#/defaults/;s/#ERROR_HANDLER#/exit \$?/" /usr/share/debhelper/autoscripts/prerm-init >> debian/project.prerm.debhelper
echo '# End automatically added section' >> debian/project.prerm.debhelper
echo "# Automatically added by dh_installinit">> debian/project.postrm.debhelper
sed "s/#SCRIPT#/project/;s/#INITPARMS#/defaults/;s/#ERROR_HANDLER#/exit \$?/" /usr/share/debhelper/autoscripts/postrm-init >> debian/project.postrm.debhelper
echo '# End automatically added section' >> debian/project.postrm.debhelper
Does your package have an entry for your init script under the Conffiles
block in /var/lib/dpkg/status
, e.g.
Package: <project>
...
Conffiles:
/etc/init.d/<project> d41d8cd98f00b204e9800998ecf8427e
and does /var/lib/dpkg/info/<project>.conffiles
contain /etc/init.d/<project>
?
Here's what's happening...
init scripts are marked as configuration files by default, since they live under /etc
.1
I'm guessing you installed the package, removed the init file, then reinstalled the package.
In this case, removing the init file counts as modifying it2, and dpkg
refuses to "overwrite" the "configuration file".
You should be able to fix the problem by removing the Conffiles
section from /var/lib/dpkg/status
.
Notes:
d41d8cd98f00b204e9800998ecf8427e
, but any non-matching checksum will cause the same behaviorI believe you should be looking at the utility script "update-rc.d" which takes care of creating / removing symlinks in /etc/init.d/ .
Use this script in the DEBIAN control files "postinst" & "postrm".
E.g. for 'postinst': update-rc.d mswitch start 20 2 3 4 5 . stop 0 1 6 .
E.g. for 'postrm': update-rc.d mswitch remove
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With