[Pkg-sysvinit-devel] [PATCH 2/4] update-rc.d: Allow update-rc.d to perform actions on alternative filesystems
Kel Modderman
kel at otaku42.de
Sun Jul 13 14:48:29 UTC 2008
Add a -d <path> command line option so that runlevel links can be manipulated
in eg. different chroot or in test suite.
---
--- a/debian/sysv-rc/sbin/update-rc.d
+++ b/debian/sysv-rc/sbin/update-rc.d
@@ -6,8 +6,9 @@
use strict;
use warnings;
-my $initd = "/etc/init.d";
-my $etcd = "/etc/rc";
+my $dir = "/";
+my $initd = "etc/init.d";
+my $etcd = "etc/rc";
my $notreally = 0;
# Print usage message and die.
@@ -15,11 +16,12 @@
sub usage {
print STDERR "update-rc.d: error: @_\n" if ($#_ >= 0);
print STDERR <<EOF;
-usage: update-rc.d [-n] [-f] <basename> remove
- update-rc.d [-n] <basename> defaults [NN | SS KK]
- update-rc.d [-n] <basename> start|stop NN runlvl [runlvl] [...] .
+usage: update-rc.d [-d <path>] [-n] [-f] <basename> remove
+ update-rc.d [-d <path>] [-n] <basename> defaults [NN | SS KK]
+ update-rc.d [-d <path>] [-n] <basename> start|stop NN runlvl [runlvl] [...] .
-n: not really
-f: force
+ -d: path to alternate /
EOF
exit (1);
}
@@ -31,6 +33,7 @@
shift @ARGV;
if (/^-n$/) { $notreally++; next }
if (/^-f$/) { $force++; next }
+ if (/^-d$/) { $dir = shift @ARGV; next }
if (/^-h|--help$/) { &usage; }
&usage("unknown option");
}
@@ -38,6 +41,16 @@
# Action.
&usage() if ($#ARGV < 1);
+
+if (-d $dir) {
+ $dir =~ s/\/$//;
+ $initd = "$dir/$initd";
+ $etcd = "$dir/$etcd";
+} else {
+ print STDERR "update-rc.d: directory does not exist '$dir'\n";
+ exit (1)
+}
+
my $bn = shift @ARGV;
unless ($bn =~ m/[a-zA-Z0-9+.-]+/) {
--- a/debian/sysv-rc/man8/update-rc.d.8
+++ b/debian/sysv-rc/man8/update-rc.d.8
@@ -5,16 +5,19 @@
update\-rc.d \- install and remove System-V style init script links
.SH SYNOPSIS
.B update\-rc.d
+.RI [ -d " path " ]
.RI [ -n ]
.RI [ -f ]
.IB name " remove"
.HP
.B update-rc.d
+.RI [ -d " path " ]
.RI [ -n ]
.IB name " defaults"
.RI [ NN " | " SS " " KK ]
.HP
.B update-rc.d
+.RI [ -d " path " ]
.RI [ -n ]
.I name
.BR start | stop
@@ -200,6 +203,11 @@
.SH OPTIONS
.TP
+.I -d path
+Path to alternative /, actions are performed on initscripts and
+runlevel directories relative to
+.BI <path> "."
+.TP
.I -n
Don't do anything, just show what we would do.
.TP
---
More information about the Pkg-sysvinit-devel
mailing list