Hi, (I am not subscribed. CC me if you can.) My life: 1. Dummy admin screw-up configuration and kill daemon-foo system. 2. Try to remove everything and start from scratch 3. dpkg -P daemon-foo 4. error ! daemon-foo.postrm has /usr/sbin/invoke-rc.d daemon-foo.postrm stop while daemon-foo was dead long time ago. No way to remove it. (See BTS #263511 as example) So it is good idea to use || true or || exit 0 for these scripts if these are not in [ ... ] (update-rc.d and invoke-rc.d) I made a quick check and found many packaging scripts like this on my system. Are they acceptable or we should have lintian checking them? Your thoughts? ---------------------------------------------------------------------- $ cd /var/lib/dpkg/info $ grep -e "-rc.d" * | fgrep -v "||" | fgrep -v "]" acpid.postinst.org:update-rc.d acpid defaults > /dev/null alsa-base.postinst: update-rc.d alsa defaults >/dev/null alsa-base.postrm: update-rc.d alsa remove >/dev/null anacron.postrm: update-rc.d anacron remove >/dev/null apache2-common.postinst: update-rc.d apache2 defaults 91 >/dev/null apache2-mpm-prefork.prerm: /usr/sbin/invoke-rc.d apache2 stop at.postinst:update-rc.d atd defaults 89 > /dev/null at.postrm: update-rc.d atd remove >/dev/null; canna.postinst: update-rc.d canna defaults >/dev/null console-common.postinst:# we hit dpkg Bug#59740. Additionally the "update-rc.d remove" console-common.postinst: update-rc.d keymaps.sh remove >/dev/null console-common.postinst: update-rc.d keymaps-lct.sh remove >/dev/null console-common.postinst: update-rc.d keymap.sh start 05 S . >/dev/null console-tools.postinst: update-rc.d console-screen.sh start 48 S . >/dev/null cron.postinst:update-rc.d cron defaults 89 11 >/dev/null cron.postinst: invoke-rc.d cron start cron.postrm: update-rc.d cron remove >/dev/null cron.prerm: invoke-rc.d cron stop cupsys.postrm: update-rc.d cupsys remove >/dev/null dbus-1.postinst: update-rc.d dbus-1 defaults >/dev/null dhcp3-server.postinst:update-rc.d dhcp3-server defaults >/dev/null dhcp3-server.postrm: update-rc.d dhcp3-server remove >/dev/null dhcp3-server.prerm: invoke-rc.d dhcp3-server stop dictd.postinst: update-rc.d dictd defaults >/dev/null dictd.postrm: update-rc.d dictd remove >/dev/null discover.postinst: update-rc.d -f discover remove > /dev/null discover.postinst: update-rc.d discover start 36 S . > /dev/null discover.postrm: update-rc.d discover remove > /dev/null 2>&1 exim4-base.postinst: update-rc.d exim4 defaults >/dev/null exim4-base.postrm: update-rc.d exim4 remove > /dev/null exim4-config.config: command -v invoke-rc.d >/dev/null 2>&1; then exim4-daemon-heavy.postinst: if command -v invoke-rc.d >/dev/null 2>&1; then exim4-daemon-heavy.prerm: if command -v invoke-rc.d >/dev/null 2>&1; then exim4-daemon-heavy.prerm: invoke-rc.d exim4 stop fcron.postinst: update-rc.d fcron defaults 89 11 >/dev/null fcron.postinst: invoke-rc.d fcron start fcron.postrm: update-rc.d fcron remove >/dev/null fcron.prerm: invoke-rc.d fcron stop festival.postinst: update-rc.d festival defaults >/dev/null fetchmail.postinst: update-rc.d fetchmail defaults 99 15 >/dev/null fetchmail.postinst: invoke-rc.d --quiet fetchmail start fetchmail.prerm: invoke-rc.d --quiet fetchmail stop flex.postinst:##: update-rc.d ${package_name} default >/dev/null flex.postrm: ##: update-rc.d ${package_name} remove >/dev/null fonty.postrm: update-rc.d -f fonty remove >/dev/null fonty.postrm: update-rc.d -f fonty remove >/dev/null gdm.postinst: update-rc.d gdm defaults 99 01 >/dev/null 2>&1 gdm.postrm: update-rc.d gdm remove >/dev/null gpm.postinst:update-rc.d gpm defaults >/dev/null gpm.postrm: update-rc.d gpm remove >/dev/null hdparm.postinst: update-rc.d hdparm start 07 S . stop 75 0 6 . >/dev/null hdparm.postrm: update-rc.d hdparm remove >/dev/null hdparm.preinst: update-rc.d -f hdparm remove > /dev/null 2>&1 hwtools.postinst: update-rc.d hwtools start 60 S . >/dev/null hwtools.postrm: update-rc.d hwtools remove >/dev/null ifupdown.postinst: update-rc.d ifupdown start 39 S . >/dev/null ifupdown.postrm: update-rc.d ifupdown remove >/dev/null inetutils-inetd.postinst: update-rc.d inetutils-inetd defaults >/dev/null inetutils-inetd.postinst: invoke-rc.d inetutils-inetd start inetutils-inetd.postrm: update-rc.d inetutils-inetd remove >/dev/null inetutils-inetd.prerm: invoke-rc.d inetutils-inetd stop inetutils-syslogd.postinst: update-rc.d -f inetutils-syslogd remove >/dev/null inetutils-syslogd.postinst:update-rc.d inetutils-syslogd defaults 10 90 >/dev/null inetutils-syslogd.postinst: update-rc.d inetutils-syslogd defaults >/dev/null inetutils-syslogd.postinst: invoke-rc.d inetutils-syslogd start inetutils-syslogd.postrm: update-rc.d inetutils-syslogd remove >/dev/null inetutils-syslogd.prerm: invoke-rc.d inetutils-syslogd stop initrd-tools.postinst: update-rc.d initrd-tools.sh start 05 S . > /dev/null initrd-tools.postrm: update-rc.d initrd-tools.sh remove > /dev/null initscripts.postinst:# Function like update-rc.d but simpler & faster. initscripts.postinst:# Heuristic: use the real update-rc.d if file-rc is detected, initscripts.postinst: update-rc.d "$@" > /dev/null initscripts.postinst:# Okay, we could do this with update-rc.d, but that would probably kdm.postrm: update-rc.d kdm remove >/dev/null klogd.postinst: update-rc.d klogd defaults 11 89 >/dev/null klogd.postinst: invoke-rc.d klogd start klogd.postrm: update-rc.d klogd remove >/dev/null klogd.preinst: invoke-rc.d klogd stop klogd.prerm: invoke-rc.d klogd stop libc6.postinst:# Function like update-rc.d but simpler & faster. libc6.postinst:# Now we use the real update-rc.d, so now this function should libc6.postinst:# be equivalent to /usr/sbin/update-rc.d. libc6.postinst: update-rc.d "$@" > /dev/null libc6.postinst:# invoke-rc.d mountkernfs start libc6.postrm:# update-rc.d mountkernfs remove > /dev/null libc6.preinst: update-rc.d utmpd remove > /dev/null libdevmapper1.00.postinst: update-rc.d libdevmapper1.00 start 25 S . >/dev/null login.postinst: update-rc.d logoutd remove make.postinst:##: update-rc.d ${package_name} default >/dev/null makedev.postinst: update-rc.d makedev defaults >/dev/null nas.postrm: update-rc.d -f nas remove >/dev/null netbase.postinst: update-rc.d -f networking remove > /dev/null 2>&1 netbase.postinst: update-rc.d -f netbase remove > /dev/null 2>&1 netbase.postinst: update-rc.d networking start 40 S . start 35 0 6 . > /dev/null netbase.postrm: update-rc.d networking remove > /dev/null nfs-common.postinst: update-rc.d nfs-common defaults 21 79 >/dev/null nfs-common.postinst:invoke-rc.d nfs-common $act nfs-common.postrm: update-rc.d nfs-common remove >/dev/null nfs-kernel-server.postinst: update-rc.d nfs-kernel-server defaults 20 80 >/dev/null nfs-kernel-server.postinst:invoke-rc.d nfs-kernel-server $act nfs-kernel-server.postrm: update-rc.d nfs-kernel-server remove >/dev/null nullmailer.postrm: update-rc.d nullmailer remove > /dev/null nvi.postinst: update-rc.d nviboot start 70 S . >/dev/null nvi.postrm: update-rc.d nviboot remove > /dev/null pcmcia-cs.postinst: update-rc.d pcmcia defaults >/dev/null pcmcia-cs.postrm: update-rc.d pcmcia remove >/dev/null portmap.postinst: update-rc.d portmap start 43 S . start 32 0 6 . start 18 2 3 4 5 . stop 81 1 . >/dev/null portmap.postinst: invoke-rc.d portmap start portmap.postrm: update-rc.d portmap remove >/dev/null portmap.prerm: invoke-rc.d portmap stop procps.postinst: update-rc.d procps remove >/dev/null procps.postinst: update-rc.d procps.sh start 30 S . >/dev/null resolvconf.postinst: update-rc.d -f resolvconf remove > /dev/null 2>&1 resolvconf.postinst: update-rc.d resolvconf start 38 S . stop 89 0 6 . >/dev/null resolvconf.postrm: update-rc.d resolvconf remove >/dev/null rsync.postinst: update-rc.d rsync defaults >/dev/null rsync.postinst: invoke-rc.d rsync restart rsync.postrm: update-rc.d rsync remove >/dev/null rsync.prerm: invoke-rc.d rsync stop screen.postinst: update-rc.d screen-cleanup start 70 S . >/dev/null screen.postrm: update-rc.d screen-cleanup remove >/dev/null setserial.postinst: update-rc.d -f setserial remove >/dev/null setserial.postinst: update-rc.d etc-setserial start 30 S . stop 30 0 6 . >/dev/null setserial.postinst:update-rc.d setserial start 46 S . stop 19 0 6 . >/dev/null setserial.postrm: update-rc.d setserial remove >/dev/null setserial.postrm: update-rc.d etc-setserial remove >/dev/null spamassassin.postinst: update-rc.d spamassassin defaults 19 >/dev/null spamassassin.postinst: invoke-rc.d spamassassin start spamassassin.postrm: update-rc.d spamassassin remove >/dev/null spamassassin.prerm: invoke-rc.d spamassassin stop squid.postrm: update-rc.d squid remove > /dev/null ssh.postinst: invoke-rc.d --quiet ssh stop ssh.postinst: update-rc.d ssh defaults >/dev/null ssh.postinst: invoke-rc.d ssh restart ssh.postrm: update-rc.d ssh remove >/dev/null ssh.prerm: invoke-rc.d ssh stop sudo.postinst:system ('update-rc.d -f sudo remove >/dev/null 2>&1'); sudo.postinst:system ('update-rc.d sudo start 75 S . >/dev/null'); sysklogd.postrm: update-rc.d sysklogd remove >/dev/null sysv-rc.list:/usr/share/doc/sysv-rc/README.invoke-rc.d.gz sysv-rc.list:/usr/share/doc/sysv-rc/README.policy-rc.d.gz sysv-rc.list:/usr/share/man/man8/update-rc.d.8.gz sysv-rc.list:/usr/share/man/man8/invoke-rc.d.8.gz sysv-rc.list:/usr/share/man/ja/man8/update-rc.d.8.gz sysv-rc.list:/usr/share/man/fr/man8/update-rc.d.8.gz sysv-rc.list:/usr/share/man/es/man8/update-rc.d.8.gz sysv-rc.list:/usr/sbin/invoke-rc.d sysv-rc.list:/usr/sbin/update-rc.d sysv-rc.postrm:ln -sf /usr/share/sysvinit/update-rc.d /usr/sbin/update-rc.d sysv-rc.postrm:ln -sf /usr/share/sysvinit/update-rc.d /usr/sbin/invoke-rc.d sysvinit.list:/usr/share/sysvinit/update-rc.d tpconfig.postinst: update-rc.d tpconfig defaults 19 81 >/dev/null tpconfig.postinst: invoke-rc.d tpconfig start tpconfig.postrm: update-rc.d tpconfig remove defaults 19 81 >/dev/null tpconfig.prerm: invoke-rc.d tpconfig stop ucf.postinst:# update-rc.d ${package_name} default >/dev/null ucf.postrm: # update-rc.d ${package_name} remove >/dev/null uml-utilities.postrm: update-rc.d uml-utilities remove >/dev/null umlrun-uml.postinst: update-rc.d umlrun-uml start 99 2 3 4 5 . >/dev/null umlrun-uml.postinst: invoke-rc.d umlrun-uml start umlrun-uml.postrm: update-rc.d umlrun-uml remove >/dev/null umlrun-uml.prerm: invoke-rc.d umlrun-uml stop util-linux.postinst:# update-rc.d will do it's job. util-linux.postinst: update-rc.d -f hwclock.sh remove 2>/dev/null > /dev/null util-linux.postinst: update-rc.d hwclock.sh start 50 S . stop 25 0 6 . > /dev/null util-linux.postinst: update-rc.d -f hwclockfirst.sh remove 2>/dev/null > /dev/null util-linux.postinst: update-rc.d hwclockfirst.sh start 18 S . > /dev/null util-linux.postrm: update-rc.d hwclock.sh remove >/dev/null util-linux.postrm: update-rc.d hwclockfirst.sh remove >/dev/null wdm.postrm: update-rc.d wdm remove >/dev/null xdm.postinst: update-rc.d xdm defaults 99 01 xdm.postrm: update-rc.d xdm remove xfree86-common.postinst: update-rc.d xfree86-common start 70 S . xfree86-common.postrm: update-rc.d xfree86-common remove xfs.postinst: update-rc.d xfs defaults xfs.postrm: update-rc.d xfs remove xprt-common.postinst: update-rc.d xprint defaults >/dev/null xprt-xprintorg.postinst: invoke-rc.d xprint restart xprt-xprintorg.prerm: invoke-rc.d xprint stop --- Except sysv-rc.* and sysvinit.list ones, I do not like other lines.
Attachment:
signature.asc
Description: Digital signature