[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Make use of invoke-rc.d, if available, mandatory?



Current policy states in section 9.3.3.2 ("Running initscripts") the
following: "The use of invoke-rc.d to invoke the /etc/init.d/*
initscripts is strongly recommended[51], instead of calling them
directly." 

Footnote 51 further says: "In the future, the use of invoke-rc.d to
invoke initscripts shall be made mandatory. Maintainers are advised to
switch to invoke-rc.d as soon as possible."

I propose that the future has arrived.

I ran the attached script on all binary packages in sid/main/i386, and
it reported 134 packages that I then analyzed manually. There were only
two false positives (both mentioned how to run their init.d script in a
message to the user, but didn't run it themselves). All other reported
packages were true positives. I have attached the list as well.

Almost all of the packages in the list are either dict-* packages
(seemingly from the same template), have code from an old debhelper
version (so a rebuild might suffice), or are otherwise pretty easy to
fix. Even though the number of packages are fairly large, it is my
opinion that it should be possible to keep the transition period quite
short, weeks at most, and I'm willing to put some time into it.

See also bug #353659 against lintian to add a check for this.

I would like to see this policy change happen in time for all packages
to be updated in etch. This would mean that sysadmins can, finally, rely
on policy-rc.d working reliably. Also it means that it would be easier
to build chroots, and not have to worry about services and daemons being
started inside them unnecessarily.

I realize that my script doesn't find all problematic packages. It is
meant as a quick estimate. For proper testing, I have recently
implemented changes into piuparts that should make it possible to find
all problematic packages: in my development version /proc now gets
mounted (ergo, start-stop-daemon works), and after packages have been
installed, lsof checks that no processes run inside the chroot. This
will, I hope, catch packages that don't use invoke-rc.d when they
should.

Are there any objections to this proposed change? (If there are none
within a few days, I'll file the appropriate bug against debian-policy.)

-- 
Every time I say /quit I die a little.

Attachment: find-lack-of-invoke
Description: application/shellscript

adjtimex_1.20-6_i386.deb
adzapper_20060115-1_all.deb
apcd_0.6b.nr-2_i386.deb
autofs_4.1.4-9_i386.deb
avahi-dnsconfd_0.6.9-6_i386.deb
battery-stats_0.3.3-1_i386.deb
bind_8.4.6-1_i386.deb
boa_0.94.14rc20-1.3_i386.deb
bricolage-db_1.8.9-1_all.deb
bwbar_1.2.2-3_i386.deb
canna-shion_0.0.20010204-4_all.deb
clamav-data_20060325.213700.1357_all.deb
diald_0.99.4-5_i386.deb
dict-bouvier_6.revised-2_all.deb
dict-devil_1.0-8_all.deb
dict-easton_1.5A-1_all.deb
dict-elements_20001107-a-3_all.deb
dict-freedict-afr-deu_1.3-1_all.deb
dict-freedict-cro-eng_1.3-1_all.deb
dict-freedict-cze-eng_1.3-1_all.deb
dict-freedict-dan-eng_1.3-1_all.deb
dict-freedict-deu-eng_1.3-1_all.deb
dict-freedict-deu-fra_1.3-1_all.deb
dict-freedict-deu-ita_1.3-1_all.deb
dict-freedict-deu-nld_1.3-1_all.deb
dict-freedict-deu-por_1.3-1_all.deb
dict-freedict-eng-ara_1.3-1_all.deb
dict-freedict-eng-cro_1.3-1_all.deb
dict-freedict-eng-cze_1.3-1_all.deb
dict-freedict-eng-deu_1.3-1_all.deb
dict-freedict-eng-fra_1.3-1_all.deb
dict-freedict-eng-hin_1.3-1_all.deb
dict-freedict-eng-hun_1.3-1_all.deb
dict-freedict-eng-iri_1.3-1_all.deb
dict-freedict-eng-ita_1.3-1_all.deb
dict-freedict-eng-lat_1.3-1_all.deb
dict-freedict-eng-nld_1.3-1_all.deb
dict-freedict-eng-por_1.3-1_all.deb
dict-freedict-eng-rom_1.3-1_all.deb
dict-freedict-eng-rus_1.3-1_all.deb
dict-freedict-eng-scr_1.3-1_all.deb
dict-freedict-eng-spa_1.3-1_all.deb
dict-freedict-eng-swa_1.3-1_all.deb
dict-freedict-eng-swe_1.3-1_all.deb
dict-freedict-eng-tur_1.3-1_all.deb
dict-freedict-eng-wel_1.3-1_all.deb
dict-freedict-fra-deu_1.3-1_all.deb
dict-freedict-fra-eng_1.3-1_all.deb
dict-freedict-fra-nld_1.3-1_all.deb
dict-freedict-gla-deu_1.3-1_all.deb
dict-freedict-hin-eng_1.3-1_all.deb
dict-freedict-hun-eng_1.3-1_all.deb
dict-freedict-iri-eng_1.3-1_all.deb
dict-freedict-ita-deu_1.3-1_all.deb
dict-freedict-ita-eng_1.3-1_all.deb
dict-freedict-jpn-deu_1.3-1_all.deb
dict-freedict-lat-deu_1.3-1_all.deb
dict-freedict-lat-eng_1.3-1_all.deb
dict-freedict-nld-deu_1.3-1_all.deb
dict-freedict-nld-eng_1.3-1_all.deb
dict-freedict-nld-fra_1.3-1_all.deb
dict-freedict-por-deu_1.3-1_all.deb
dict-freedict-por-eng_1.3-1_all.deb
dict-freedict-scr-eng_1.3-1_all.deb
dict-freedict-slo-eng_1.3-1_all.deb
dict-freedict-spa-eng_1.3-1_all.deb
dict-freedict-swa-eng_1.3-1_all.deb
dict-freedict-swe-eng_1.3-1_all.deb
dict-freedict-tur-deu_1.3-1_all.deb
dict-freedict-tur-eng_1.3-1_all.deb
dict-freedict-wel-eng_1.3-1_all.deb
dict-gazetteer2k-counties_1.0.0-4_all.deb
dict-gazetteer2k-places_1.0.0-4_all.deb
dict-gazetteer2k-zips_1.0.0-4_all.deb
dict-gcide_0.48-4.1_all.deb
dict-hitchcock_1.5A-1_all.deb
dict-jargon_4.4.4-6_all.deb
dict-moby-thesaurus_1.0-5_all.deb
discover_2.0.7-2.1_i386.deb
eagle-usb-utils_2.1.1-2_i386.deb
exim-doc-html_3.20-1_all.deb
exim-doc_3.20-1_all.deb
exim_3.36-18_i386.deb
fidogate_4.4.7-3_i386.deb
firebird2-classic-server_1.5.3.4870-3_i386.deb
fml_4.0.3-2_all.deb
fonty_1.0-23_all.deb
gcpegg_5.1-7_i386.deb
genpower_1.0.5-1_i386.deb
gnudip_2.1.1-3_all.deb
heartbeat-2_2.0.4-1_i386.deb
heartbeat_1.2.4-5_i386.deb
interchange-ui_5.4.0-1_all.deb
iptotal_0.3.3-6_i386.deb
jukebox-mercury_0.1-1.1_all.deb
libcteco50000_0.9.8-3_i386.deb
libnss-ldap_238-1.1_i386.deb
libroxen-imho_0.99-2_i386.deb
libslbreflex2_2.2.0-8_i386.deb
libssl0.9.7_0.9.7g-5_i386.deb
libssl0.9.8_0.9.8a-8_i386.deb
libtowitoko2_2.0.7-7_i386.deb
linuxlogo_4.12-2_i386.deb
mailgraph_1.12-1_all.deb
mono-xsp2_1.1.13-1_all.deb
mono-xsp_1.1.13-1_all.deb
nas_1.7-6_i386.deb
nbd-client_2.8.3-2_i386.deb
nessusd_2.2.7-2_i386.deb
net-acct_0.71-7_i386.deb
netsaint-statd-server_2.15-9_all.deb
ntop_3.2-3_i386.deb
orca_0.2.3_i386.deb
oss-preserve_1.1-2_i386.deb
php4-tclink_3.4.0-3.3_i386.deb
pipsecd_19990511-27_i386.deb
quota_3.13-4_i386.deb
rbootd_2.0-8_i386.deb
reseed_1.1-3_all.deb
roxen4_4.0.325-6_i386.deb
sauce_0.8.1_all.deb
scanlogd_2.2.5-1_i386.deb
sendpage-server_0.9.14-5_all.deb
sfs-client_0.8-0+pre20050819.1-2.1_i386.deb
sfs-server_0.8-0+pre20050819.1-2.1_i386.deb
squid-prefetch_1.0-1_all.deb
tama_1.2.0-3_i386.deb
tcpquota_1.6.15-10_all.deb
thttpd_2.23beta1-4_i386.deb
uif_1.0.5-3_all.deb
watchdog_5.2.4-5_i386.deb
wdm_1.28-2.1_i386.deb
xpilot-ng-server_4.7.2-1.1+b1_i386.deb
xtide-data_20040203-1_all.deb

Reply to: