[Pkg-sysvinit-devel] Bug#614895: sysv-rc: Warning in update-rc.d swaps script and LSB Default values?

Chris Hiestand chiestand at salk.edu
Thu Feb 24 03:05:55 UTC 2011


Package: sysv-rc
Version: 2.88dsf-13.1
Severity: minor
Tags: patch

It seems to me that when an init script has non-lsb-standard runlevels,
they get misreported by update-rc.d:

sudo update-rc.d foobar defaults 25
update-rc.d: using dependency based boot sequencing
update-rc.d: warning: foobar start runlevel arguments (2 3 4 5) do not match LSB Default-Start values (4 5)
update-rc.d: warning: foobar stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (2 3)


If the LSB headers in foobar are:
### BEGIN INIT INFO
# Provides:          foobar
# Required-Start:    mountdevsubfs $remote_fs $syslog
# Required-Stop:     
# Should-Start:      udev
# Default-Start:     4 5
# Default-Stop:      2 3
# Short-Description: foo to the bar
### END INIT INFO

Then I'd imagine that the warning should read:
update-rc.d: warning: foobar start runlevel arguments (4 5) do not match LSB Default-Start values (2 3 4 5)
update-rc.d: warning: foobar stop runlevel arguments (2 3) do not match LSB Default-Stop values (0 1 6)

Maybe I'm wrong and just misunderstanding how warning should be displayed? If so, is there
another way to reword and make it more clear?


Patch to swap setting variables:
--- update-rc.d 2011-02-23 18:40:15.000000000 -0800
+++ /usr/sbin/update-rc.d 2011-02-23 18:31:21.052032988 -0800
@@ -478,17 +478,17 @@
 
 sub cmp_args_with_defaults {
     my ($name, $act) = (shift, shift);
-    my ($lsb_start_ref, $lsb_stop_ref, $arg_str, $lsb_str);
+    my ($arg_start_ref, $arg_stop_ref, $arg_str, $lsb_str);
     my (@arg_start_lvls, @arg_stop_lvls, @lsb_start_lvls, @lsb_stop_lvls);
 
-    ($lsb_start_ref, $lsb_stop_ref) = parse_def_start_stop("/etc/init.d/$name");
-    @lsb_start_lvls = @$lsb_start_ref;
-    @lsb_stop_lvls  = @$lsb_stop_ref;
-    return if (!@lsb_start_lvls and !@lsb_stop_lvls);
+    ($arg_start_ref, $arg_stop_ref) = parse_def_start_stop("/etc/init.d/$name");
+    @arg_start_lvls = @$arg_start_ref;
+    @arg_stop_lvls  = @$arg_stop_ref;
+    return if (!@arg_start_lvls and !@arg_stop_lvls);
 
     if ($act eq 'defaults') {
-        @arg_start_lvls = (2, 3, 4, 5);
-        @arg_stop_lvls  = (0, 1, 6);
+        @lsb_start_lvls = (2, 3, 4, 5);
+        @lsb_stop_lvls  = (0, 1, 6);
     } elsif ($act eq 'start' or $act eq 'stop') {
         my $start = $act eq 'start' ? 1 : 0;
         my $stop = $act eq 'stop' ? 1 : 0;
@@ -512,8 +512,8 @@
             } elsif ($arg eq '.') {
                 next;
             }
-            push(@arg_start_lvls, $arg) if $start;
-            push(@arg_stop_lvls, $arg) if $stop;
+            push(@lsb_start_lvls, $arg) if $start;
+            push(@lsb_stop_lvls, $arg) if $stop;
         } continue {
             $argi++;
         }


-- System Information:
Debian Release: 6.0
  APT prefers stable
  APT policy: (900, 'stable')
Architecture: amd64 (x86_64)

Kernel: Linux 2.6.32-5-amd64 (SMP w/4 CPU cores)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash

Versions of packages sysv-rc depends on:
ii  debconf [debconf-2.0]       1.5.36.1     Debian configuration management sy
ii  insserv                     1.14.0-2     Tool to organize boot sequence usi
ii  sysvinit-utils              2.88dsf-13.1 System-V-like utilities

Versions of packages sysv-rc recommends:
ii  lsb-base                3.2-23.2squeeze1 Linux Standard Base 3.2 init scrip

Versions of packages sysv-rc suggests:
pn  bum                           <none>     (no description available)
pn  sysv-rc-conf                  <none>     (no description available)

-- debconf information:
  sysv-rc/unable-to-convert:
  sysv-rc/convert-legacy: true

-- debsums errors found:
debsums: changed file /usr/sbin/update-rc.d (from sysv-rc package)
-------------- next part --------------
--- update-rc.d	2011-02-23 18:40:15.000000000 -0800
+++ /usr/sbin/update-rc.d	2011-02-23 18:31:21.052032988 -0800
@@ -478,17 +478,17 @@
 
 sub cmp_args_with_defaults {
     my ($name, $act) = (shift, shift);
-    my ($lsb_start_ref, $lsb_stop_ref, $arg_str, $lsb_str);
+    my ($arg_start_ref, $arg_stop_ref, $arg_str, $lsb_str);
     my (@arg_start_lvls, @arg_stop_lvls, @lsb_start_lvls, @lsb_stop_lvls);
 
-    ($lsb_start_ref, $lsb_stop_ref) = parse_def_start_stop("/etc/init.d/$name");
-    @lsb_start_lvls = @$lsb_start_ref;
-    @lsb_stop_lvls  = @$lsb_stop_ref;
-    return if (!@lsb_start_lvls and !@lsb_stop_lvls);
+    ($arg_start_ref, $arg_stop_ref) = parse_def_start_stop("/etc/init.d/$name");
+    @arg_start_lvls = @$arg_start_ref;
+    @arg_stop_lvls  = @$arg_stop_ref;
+    return if (!@arg_start_lvls and !@arg_stop_lvls);
 
     if ($act eq 'defaults') {
-        @arg_start_lvls = (2, 3, 4, 5);
-        @arg_stop_lvls  = (0, 1, 6);
+        @lsb_start_lvls = (2, 3, 4, 5);
+        @lsb_stop_lvls  = (0, 1, 6);
     } elsif ($act eq 'start' or $act eq 'stop') {
         my $start = $act eq 'start' ? 1 : 0;
         my $stop = $act eq 'stop' ? 1 : 0;
@@ -512,8 +512,8 @@
             } elsif ($arg eq '.') {
                 next;
             }
-            push(@arg_start_lvls, $arg) if $start;
-            push(@arg_stop_lvls, $arg) if $stop;
+            push(@lsb_start_lvls, $arg) if $start;
+            push(@lsb_stop_lvls, $arg) if $stop;
         } continue {
             $argi++;
         }


More information about the Pkg-sysvinit-devel mailing list