Package: sysvinit
Version: 2.87dsf-8
Severity: normal
Tags: patch

/etc/init.d/rc calls /sbin/startpar to run /etc/init.d scripts in
parallel.  Any scripts which return codes 5 or 6 will be marked as
"skipped", which is reported to the console by rc as:

  startpar: service(s) skipped: service

This does not even imply that startpar attempted to start the service,
and leads the user to investigate why startpar "skipped" the service,
not why the service itself is terminating incorrectly.

As per the LSB, codes 5 and 6 are:

  5   program is not installed
  6   program is not configured

For both of these codes, startpar currently outputs "skipped_service="
and the names of services.  rc eval's this output and prints the
services to console with the above error.

The attached patch causes startpar to return
"skipped_service_not_installed=" and "skipped_service_not_configured=",
and correspondingly changes rc to look for these names, and print a more
descriptive message.

-- System Information:
Debian Release: squeeze/sid
  APT prefers stable
  APT policy: (500, 'stable')
Architecture: amd64 (x86_64)

Kernel: Linux 2.6.30-2-amd64 (SMP w/8 CPU cores)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/bash

Versions of packages sysvinit depends on:
ii  initscripts                   2.87dsf-8  scripts for initializing and shutt
ii  libc6                         2.11.2-2   Embedded GNU C Library: Shared lib
ii  libselinux1                   2.0.96-1   SELinux runtime shared libraries
ii  libsepol1                     2.0.41-1   SELinux library for manipulating b
ii  sysv-rc                       2.87dsf-8  System-V-like runlevel change mech
ii  sysvinit-utils                2.87dsf-8  System-V-like utilities

sysvinit recommends no packages.

sysvinit suggests no packages.

-- debconf-show failed
Index: rc
===================================================================
--- rc	(revision 1961)
+++ rc	(working copy)
@@ -133,12 +133,17 @@
 				log_failure_msg "startpar: service(s) returned failure: $failed_service"
 			fi
 
-			if [ -n "$skipped_service" ]
+			if [ -n "$skipped_service_not_installed" ]
 			then
-				log_warning_msg "startpar: service(s) skipped: $skipped_service"
+				log_warning_msg "startpar: service(s) skipped, program is not installed: $skipped_service_not_installed"
 			fi
 
-			unset failed_service skipped_service
+			if [ -n "$skipped_service_not_configured" ]
+			then
+				log_warning_msg "startpar: service(s) skipped, program is not configured: $skipped_service_not_configured"
+			fi
+
+			unset failed_service skipped_service_not_installed skipped_service_not_configured
 		}
 		;;
 	none|*)
--- a/makeboot.c        (revision 1961)
+++ b/makeboot.c        (working copy)
@@ -485,10 +485,10 @@
                }
        }
        printf("\"\n");
-       printf("skipped_service=\"");
+       printf("skipped_service_not_installed=\"");
        i = r = 0;
        for (i = 0; i < tree_entries; i++) {
-               if (resvec[i] == 5 || resvec[i] == 6) {
+               if (resvec[i] == 5) {
                        if (r)
                                printf(" ");
                        printf("%s", nodevec[i]->name);
@@ -496,6 +496,17 @@
                }
        }
        printf("\"\n");
+       printf("skipped_service_not_configured=\"");
+       i = r = 0;
+       for (i = 0; i < tree_entries; i++) {
+               if (resvec[i] == 6) {
+                       if (r)
+                               printf(" ");
+                       printf("%s", nodevec[i]->name);
+                       r++;
+               }
+       }
+       printf("\"\n");
 }
 
 #if DEBUG

Reply via email to