openpkg/rc.8

Thu, 04 Oct 2012 20:30:05 +0200

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Thu, 04 Oct 2012 20:30:05 +0200
changeset 715
c10fb90893b9
parent 427
71503088f51b
permissions
-rw-r--r--

Correct out of date build configuration, porting to Solaris 11 network
link infrastructure and new libpcap logic. This additionally allows for
device drivers in subdirectories of /dev. Correct packaged nmap
personalities and signatures to work out of the box. Finally, hack
arpd logic to properly close sockets and quit on TERM by repeating
signaling in the run command script. Sadly, all this fails to correct
the run time behaviour of honeyd which fails to bind to the IP layer.

michael@428 1 .\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.22)
michael@13 2 .\"
michael@13 3 .\" Standard preamble:
michael@13 4 .\" ========================================================================
michael@13 5 .de Sp \" Vertical space (when we can't use .PP)
michael@13 6 .if t .sp .5v
michael@13 7 .if n .sp
michael@13 8 ..
michael@13 9 .de Vb \" Begin verbatim text
michael@13 10 .ft CW
michael@13 11 .nf
michael@13 12 .ne \\$1
michael@13 13 ..
michael@13 14 .de Ve \" End verbatim text
michael@13 15 .ft R
michael@13 16 .fi
michael@13 17 ..
michael@13 18 .\" Set up some character translations and predefined strings. \*(-- will
michael@13 19 .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
michael@428 20 .\" double quote, and \*(R" will give a right double quote. \*(C+ will
michael@428 21 .\" give a nicer C++. Capital omega is used to do unbreakable dashes and
michael@428 22 .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff,
michael@428 23 .\" nothing in troff, for use with C<>.
michael@428 24 .tr \(*W-
michael@13 25 .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
michael@13 26 .ie n \{\
michael@13 27 . ds -- \(*W-
michael@13 28 . ds PI pi
michael@13 29 . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
michael@13 30 . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
michael@13 31 . ds L" ""
michael@13 32 . ds R" ""
michael@13 33 . ds C`
michael@13 34 . ds C'
michael@13 35 'br\}
michael@13 36 .el\{\
michael@13 37 . ds -- \|\(em\|
michael@13 38 . ds PI \(*p
michael@13 39 . ds L" ``
michael@13 40 . ds R" ''
michael@13 41 'br\}
michael@13 42 .\"
michael@428 43 .\" Escape single quotes in literal strings from groff's Unicode transform.
michael@428 44 .ie \n(.g .ds Aq \(aq
michael@428 45 .el .ds Aq '
michael@428 46 .\"
michael@13 47 .\" If the F register is turned on, we'll generate index entries on stderr for
michael@428 48 .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
michael@13 49 .\" entries marked with X<> in POD. Of course, you'll have to process the
michael@13 50 .\" output yourself in some meaningful fashion.
michael@428 51 .ie \nF \{\
michael@13 52 . de IX
michael@13 53 . tm Index:\\$1\t\\n%\t"\\$2"
michael@13 54 ..
michael@13 55 . nr % 0
michael@13 56 . rr F
michael@13 57 .\}
michael@428 58 .el \{\
michael@428 59 . de IX
michael@428 60 ..
michael@428 61 .\}
michael@13 62 .\"
michael@13 63 .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
michael@13 64 .\" Fear. Run. Save yourself. No user-serviceable parts.
michael@13 65 . \" fudge factors for nroff and troff
michael@13 66 .if n \{\
michael@13 67 . ds #H 0
michael@13 68 . ds #V .8m
michael@13 69 . ds #F .3m
michael@13 70 . ds #[ \f1
michael@13 71 . ds #] \fP
michael@13 72 .\}
michael@13 73 .if t \{\
michael@13 74 . ds #H ((1u-(\\\\n(.fu%2u))*.13m)
michael@13 75 . ds #V .6m
michael@13 76 . ds #F 0
michael@13 77 . ds #[ \&
michael@13 78 . ds #] \&
michael@13 79 .\}
michael@13 80 . \" simple accents for nroff and troff
michael@13 81 .if n \{\
michael@13 82 . ds ' \&
michael@13 83 . ds ` \&
michael@13 84 . ds ^ \&
michael@13 85 . ds , \&
michael@13 86 . ds ~ ~
michael@13 87 . ds /
michael@13 88 .\}
michael@13 89 .if t \{\
michael@13 90 . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
michael@13 91 . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
michael@13 92 . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
michael@13 93 . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
michael@13 94 . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
michael@13 95 . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
michael@13 96 .\}
michael@13 97 . \" troff and (daisy-wheel) nroff accents
michael@13 98 .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
michael@13 99 .ds 8 \h'\*(#H'\(*b\h'-\*(#H'
michael@13 100 .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
michael@13 101 .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
michael@13 102 .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
michael@13 103 .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
michael@13 104 .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
michael@13 105 .ds ae a\h'-(\w'a'u*4/10)'e
michael@13 106 .ds Ae A\h'-(\w'A'u*4/10)'E
michael@13 107 . \" corrections for vroff
michael@13 108 .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
michael@13 109 .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
michael@13 110 . \" for low resolution devices (crt and lpr)
michael@13 111 .if \n(.H>23 .if \n(.V>19 \
michael@13 112 \{\
michael@13 113 . ds : e
michael@13 114 . ds 8 ss
michael@13 115 . ds o a
michael@13 116 . ds d- d\h'-1'\(ga
michael@13 117 . ds D- D\h'-1'\(hy
michael@13 118 . ds th \o'bp'
michael@13 119 . ds Th \o'LP'
michael@13 120 . ds ae ae
michael@13 121 . ds Ae AE
michael@13 122 .\}
michael@13 123 .rm #[ #] #H #V #F C
michael@13 124 .\" ========================================================================
michael@13 125 .\"
michael@13 126 .IX Title "RC 8"
michael@13 127 .TH RC 8 "OpenPKG" "RC(8)" "OpenPKG"
michael@428 128 .\" For nroff, turn off justification. Always turn off hyphenation; it makes
michael@428 129 .\" way too many mistakes in technical documents.
michael@428 130 .if n .ad l
michael@428 131 .nh
michael@13 132 .SH "NAME"
michael@428 133 @l_prefix@/bin/openpkg rc \- OpenPKG Run\-Command Processor
michael@13 134 .SH "SYNOPSIS"
michael@13 135 .IX Header "SYNOPSIS"
michael@428 136 \&\fB\f(CB@l_prefix\fB@/bin/openpkg rc\fR [\fB\-s\fR|\fB\-\-silent\fR] [\fB\-v\fR|\fB\-\-verbose\fR] [\fB\-d\fR|\fB\-\-debug\fR] [\fB\-k\fR|\fB\-\-keep\fR] [\fB\-D\fR|\fB\-\-define\fR \fIname\fR=\fIvalue\fR] \fIpackage\fR \fIcommand\fR [\fIcommand\fR ...]
michael@13 137 .PP
michael@428 138 \&\fB\f(CB@l_prefix\fB@/bin/openpkg rc\fR \fB\-p\fR|\fB\-\-print\fR \fIpackage\fR \fIcommand\fR [\fIcommand\fR ...]
michael@13 139 .PP
michael@428 140 eval `\fB\f(CB@l_prefix\fB@/bin/openpkg rc\fR \fB\-e\fR|\fB\-\-eval\fR \fIpackage\fR \fIcommand\fR [\fIcommand\fR ...]`
michael@13 141 .PP
michael@428 142 \&\fB\f(CB@l_prefix\fB@/bin/openpkg rc\fR \fB\-q\fR|\fB\-\-query\fR \fIvariable\fR [\fIvariable\fR ...]
michael@13 143 .PP
michael@428 144 \&\fB\f(CB@l_prefix\fB@/bin/openpkg rc\fR \fB\-c\fR|\fB\-\-config\fR
michael@13 145 .PP
michael@428 146 \&\fB\f(CB@l_prefix\fB@/bin/openpkg rc\fR \fB\-h\fR|\fB\-\-help\fR
michael@13 147 .SH "DESCRIPTION"
michael@13 148 .IX Header "DESCRIPTION"
michael@428 149 The \fB\f(CB@l_prefix\fB@/bin/openpkg rc\fR program is the run-command (rc) processor
michael@13 150 of the \fBOpenPKG\fR instance \f(CW\*(C`@l_prefix@\*(C'\fR. It allows querying the rc
michael@13 151 configuration variables and the execution of rc command scripts of one
michael@13 152 or more installed \fBOpenPKG\fR packages. The implemented run-command
michael@13 153 facility is partly modeled after the classical \s-1UNIX\s0(tm) System V
michael@13 154 run-command facility plus ideas taken from the FreeBSD and NetBSD
michael@13 155 run-command facilities. It mainly merges the classical startup/shutdown
michael@13 156 procedures with periodical procedures into a single approach.
michael@13 157 .SH "USAGE"
michael@13 158 .IX Header "USAGE"
michael@428 159 .ie n .IP "\fB\fB@l_prefix\fB@/bin/openpkg rc\fR [\fB\-s\fR|\fB\-\-silent\fR] [\fB\-v\fR|\fB\-\-verbose\fR] [\fB\-d\fR|\fB\-\-debug\fR] [\fB\-k\fR|\fB\-\-keep\fR] [\fB\-D\fR|\fB\-\-define\fR \fIname\fR=\fIvalue\fR] \fIpackage\fR \fIcommand\fR [\fIcommand\fR ...]" 4
michael@428 160 .el .IP "\fB\f(CB@l_prefix\fB@/bin/openpkg rc\fR [\fB\-s\fR|\fB\-\-silent\fR] [\fB\-v\fR|\fB\-\-verbose\fR] [\fB\-d\fR|\fB\-\-debug\fR] [\fB\-k\fR|\fB\-\-keep\fR] [\fB\-D\fR|\fB\-\-define\fR \fIname\fR=\fIvalue\fR] \fIpackage\fR \fIcommand\fR [\fIcommand\fR ...]" 4
michael@428 161 .IX Item "@l_prefix@/bin/openpkg rc [-s|--silent] [-v|--verbose] [-d|--debug] [-k|--keep] [-D|--define name=value] package command [command ...]"
michael@428 162 \&\fBRun-Command Execution.\fR This executes one or more specified
michael@13 163 \&\fIcommand\fRs in a particular \fIpackage\fR or in all installed packages if
michael@13 164 \&\fIpackage\fR is "\f(CW\*(C`all\*(C'\fR". Option \fB\-\-silent\fR can be used to explicitly
michael@13 165 disable progress messages on \f(CW\*(C`stderr\*(C'\fR. Option \fB\-\-verbose\fR can be used
michael@13 166 to explicitly enable progress messages on \f(CW\*(C`stderr\*(C'\fR. By default, \fBrc\fR
michael@13 167 automatically determines whether progress messages should be displayed
michael@13 168 or not depending on whether \f(CW\*(C`stderr\*(C'\fR is connected to a terminal device.
michael@13 169 Option \fB\-\-keep\fR can be used for debugging purposes to keep the
michael@428 170 temporary files were generated during internal processing. Option
michael@428 171 \&\fB\-\-define\fR can be used to on-the-fly re-define a configuration variable
michael@428 172 \&\fIname\fR with \fIvalue\fR.
michael@428 173 .ie n .IP "\fB\fB@l_prefix\fB@/bin/openpkg rc\fR \fB\-p\fR|\fB\-\-print\fR \fIpackage\fR \fIcommand\fR [\fIcommand\fR ...]" 4
michael@428 174 .el .IP "\fB\f(CB@l_prefix\fB@/bin/openpkg rc\fR \fB\-p\fR|\fB\-\-print\fR \fIpackage\fR \fIcommand\fR [\fIcommand\fR ...]" 4
michael@13 175 .IX Item "@l_prefix@/bin/openpkg rc -p|--print package command [command ...]"
michael@428 176 \&\fBRun-Command Printing.\fR This is like the run-command execution (see
michael@13 177 above), but instead of immediately executing all involved individual
michael@13 178 run-command scripts, they are concatenated (but with all configuration
michael@13 179 parts reduced to a single configuration part) and printed to \f(CW\*(C`stdout\*(C'\fR.
michael@13 180 Use this for debugging or post-processing purposes.
michael@428 181 .ie n .IP "eval `\fB\fB@l_prefix\fB@/bin/openpkg rc\fR \fB\-e\fR|\fB\-\-eval\fR \fIpackage\fR \fIcommand\fR [\fIcommand\fR ...]`" 4
michael@428 182 .el .IP "eval `\fB\f(CB@l_prefix\fB@/bin/openpkg rc\fR \fB\-e\fR|\fB\-\-eval\fR \fIpackage\fR \fIcommand\fR [\fIcommand\fR ...]`" 4
michael@13 183 .IX Item "eval `@l_prefix@/bin/openpkg rc -e|--eval package command [command ...]`"
michael@428 184 \&\fBRun-Command Evaluation.\fR This is like the run-command execution
michael@13 185 (see above), but the resulting exported shell environment variables
michael@428 186 are output to a temporary file as a (Bourne-Shell or C\-Shell syntax)
michael@13 187 shell script, suitable for evaluation within the shell environment
michael@13 188 of the caller. A one-line script is printed to \f(CW\*(C`stdout\*(C'\fR which then
michael@13 189 \&\*(L"sources\*(R" (and immediately removes) this temporary file. This is
michael@13 190 slightly different from printing the temporary script directly to
michael@13 191 \&\f(CW\*(C`stdout\*(C'\fR, because not all shell implementations like to "\fBeval\fR\*(L"
michael@13 192 large multi-line scripts. Hence, use this for executing the \*(R"\f(CW\*(C`env\*(C'\fR"
michael@13 193 run-commands within the current shell.
michael@428 194 .ie n .IP "\fB\fB@l_prefix\fB@/bin/openpkg rc\fR \fB\-q\fR|\fB\-\-query\fR \fIvariable\fR [\fIvariable\fR ...]" 4
michael@428 195 .el .IP "\fB\f(CB@l_prefix\fB@/bin/openpkg rc\fR \fB\-q\fR|\fB\-\-query\fR \fIvariable\fR [\fIvariable\fR ...]" 4
michael@13 196 .IX Item "@l_prefix@/bin/openpkg rc -q|--query variable [variable ...]"
michael@13 197 \&\fBConfiguration Variable Querying.\fR This queries the effective values
michael@13 198 (see \fBRUN-COMMAND \s-1CONFIGURATION\s0\fR section below) of one or more
michael@13 199 run-command configuration \fIvariable\fRs. Use this within a shell script
michael@13 200 to selectively query a particular variable.
michael@428 201 .ie n .IP "\fB\fB@l_prefix\fB@/bin/openpkg rc\fR \fB\-c\fR|\fB\-\-config\fR" 4
michael@428 202 .el .IP "\fB\f(CB@l_prefix\fB@/bin/openpkg rc\fR \fB\-c\fR|\fB\-\-config\fR" 4
michael@13 203 .IX Item "@l_prefix@/bin/openpkg rc -c|--config"
michael@13 204 \&\fBConfiguration Variable Summary.\fR This displays on \f(CW\*(C`stdout\*(C'\fR a
michael@13 205 three-column table showing the name, default and effective values of
michael@13 206 all run-command configuration variables. If \f(CW\*(C`stdout\*(C'\fR is connected to
michael@13 207 terminal device, variables where the default and effective values differ
michael@13 208 are shown in bold mode.
michael@428 209 .ie n .IP "\fB\fB@l_prefix\fB@/bin/openpkg rc\fR \fB\-h\fR|\fB\-\-help\fR" 4
michael@428 210 .el .IP "\fB\f(CB@l_prefix\fB@/bin/openpkg rc\fR \fB\-h\fR|\fB\-\-help\fR" 4
michael@13 211 .IX Item "@l_prefix@/bin/openpkg rc -h|--help"
michael@13 212 \&\fBRequesting Help.\fR This just displays a short summary of
michael@13 213 the usage for this program.
michael@13 214 .SH "FILES"
michael@13 215 .IX Header "FILES"
michael@428 216 .ie n .SS "RUN-COMMAND \s-1FILES\s0 (\*(C`@l_prefix@/bin/openpkg rc.d/rc.*\*(C')"
michael@428 217 .el .SS "RUN-COMMAND \s-1FILES\s0 (\f(CW\*(C`@l_prefix@/bin/openpkg rc.d/rc.*\*(C'\fP)"
michael@13 218 .IX Subsection "RUN-COMMAND FILES (@l_prefix@/bin/openpkg rc.d/rc.*)"
michael@13 219 The foundation of the \fBOpenPKG\fR run-command facility are the individual
michael@13 220 run-command files \f(CW\*(C`rc.*\*(C'\fR of the installed packages. They are all
michael@13 221 located in the directory \f(CW\*(C`@l_prefix@/bin/openpkg rc.d/\*(C'\fR and are named
michael@13 222 "\f(CW\*(C`rc.\*(C'\fR\fIpackage\fR\*(L". They consist of one or more sections, each starting
michael@13 223 with a section header \*(R"\f(CW\*(C`%\*(C'\fR\fIname\fR [\fIoptions\fR]" and following a \s-1GNU\s0
michael@13 224 Bash compatible shell script. There are three classes of sections:
michael@13 225 .IP "\fBSpecial Sections\fR" 4
michael@13 226 .IX Item "Special Sections"
michael@13 227 There are 2 sections which have a special meaning to the \fBrc\fR program
michael@13 228 and cannot be used for different purposes.
michael@13 229 .RS 4
michael@13 230 .ie n .IP "%config" 4
michael@13 231 .el .IP "\f(CW%config\fR" 4
michael@13 232 .IX Item "%config"
michael@13 233 This section has to consist of run-command configuration
michael@13 234 variable default settings in Bourne-Shell syntax only, i.e.,
michael@13 235 it has to contain one or more lines, each of exactly the form
michael@13 236 "\fIpackage\fR\f(CW\*(C`_\*(C'\fR\fIvariable\fR\f(CW\*(C`=\*(C'\fR\fIvalue\fR\*(L". Notice that in section
michael@13 237 \&\*(R"\f(CW%config\fR\*(L" of run-command file \*(R"\f(CW\*(C`rc.foo\*(C'\fR\*(L" the variables all have
michael@13 238 to be prefixed (by convention) with \*(R"\f(CW\*(C`foo_\*(C'\fR". It is allowed that the
michael@13 239 \&\fIvalue\fRs reference other variables defined before in the same section
michael@13 240 or from the "\f(CW%config\fR\*(L" section of the bootstrap package \*(R"\f(CW\*(C`openpkg\*(C'\fR".
michael@13 241 Additionally, by convention all lines have to be indented by 4 spaces.
michael@13 242 .Sp
michael@13 243 \&\s-1NOTICE:\s0 All sections of all run-command scripts see all \f(CW%config\fR
michael@13 244 sections of all packages.
michael@13 245 .ie n .IP "%common" 4
michael@13 246 .el .IP "\f(CW%common\fR" 4
michael@13 247 .IX Item "%common"
michael@13 248 This section can consist of an arbitrary shell script
michael@13 249 which is automatically prepended to the shell scripts
michael@13 250 of all other sections on execution. It is usually used
michael@13 251 to define common and local variables and functions.
michael@13 252 .RE
michael@13 253 .RS 4
michael@13 254 .RE
michael@13 255 .IP "\fBConventional Sections\fR" 4
michael@13 256 .IX Item "Conventional Sections"
michael@13 257 There are 9 sections which have no special meaning to the \fBrc\fR program,
michael@13 258 but are used in \fBOpenPKG\fR by convention for standard purposes. Hence,
michael@13 259 do not use them for arbitrary things instead.
michael@13 260 .Sp
michael@13 261 Throughout these sections it is possible to specify the user to be
michael@13 262 switched to before the code is executed.
michael@13 263 .Sp
michael@13 264 A priority can be given for each section to control execution sequence
michael@13 265 if "\f(CW\*(C`all\*(C'\fR" packages are given. Higher priority leads to earlier
michael@13 266 starting and later stopping. The priority is a number where low numbers
michael@13 267 mean high priority (numerically sorted for starting). If omitted, the
michael@13 268 priority defaults to 500.
michael@13 269 .Sp
michael@13 270 Output generated on \fIstdout\fR and \fIstderr\fR is captured and normally
michael@13 271 suppressed. In case the sections script exits with a non-zero return
michael@13 272 value, the intercepted messages are consolidated, reformatted with a
michael@13 273 surrounding ASCII-art border and printed to \fIstderr\fR. If the section
michael@13 274 is tagged with option \fB\-o\fR, \fIstdout\fR messages are passed through
michael@13 275 verbatim, even if the section script exists with a zero return value.
michael@13 276 .RS 4
michael@428 277 .ie n .IP "%start [\fB\-u\fR \fIuser\fR] [\fB\-p\fR \fIpriority\fR]" 4
michael@13 278 .el .IP "\f(CW%start\fR [\fB\-u\fR \fIuser\fR] [\fB\-p\fR \fIpriority\fR]" 4
michael@13 279 .IX Item "%start [-u user] [-p priority]"
michael@13 280 This section should start daemons or initialize components.
michael@13 281 It is especially executed by \fBOpenPKG\fR during system startup.
michael@428 282 .ie n .IP "%stop [\fB\-u\fR \fIuser\fR] [\fB\-p\fR \fIpriority\fR]" 4
michael@13 283 .el .IP "\f(CW%stop\fR [\fB\-u\fR \fIuser\fR] [\fB\-p\fR \fIpriority\fR]" 4
michael@13 284 .IX Item "%stop [-u user] [-p priority]"
michael@13 285 This section should stop daemons or cleaning up components. It is
michael@13 286 especially executed by \fBOpenPKG\fR during system shutdown and package
michael@13 287 deinstallation.
michael@428 288 .ie n .IP "%restart [\fB\-u\fR \fIuser\fR] [\fB\-p\fR \fIpriority\fR]" 4
michael@13 289 .el .IP "\f(CW%restart\fR [\fB\-u\fR \fIuser\fR] [\fB\-p\fR \fIpriority\fR]" 4
michael@13 290 .IX Item "%restart [-u user] [-p priority]"
michael@13 291 This section should restart daemons.
michael@13 292 It is especially executed by \fBOpenPKG\fR during package upgrades.
michael@428 293 .ie n .IP "\*(C`%status \-o\*(C' [\fB\-u\fR \fIuser\fR] [\fB\-p\fR \fIpriority\fR]" 4
michael@13 294 .el .IP "\f(CW\*(C`%status \-o\*(C'\fR [\fB\-u\fR \fIuser\fR] [\fB\-p\fR \fIpriority\fR]" 4
michael@13 295 .IX Item "%status -o [-u user] [-p priority]"
michael@13 296 This section has to provide status information for a package
michael@13 297 by printing to \f(CW\*(C`stdout\*(C'\fR (hence the \fB\-o\fR option is always required),
michael@13 298 in Bourne-Shell syntax, the definition of three variables:
michael@13 299 .RS 4
michael@13 300 .ie n .IP "\fIpackage\fR\*(C`_enable\*(C'" 4
michael@13 301 .el .IP "\fIpackage\fR\f(CW\*(C`_enable\*(C'\fR" 4
michael@13 302 .IX Item "package_enable"
michael@428 303 Whether package is enabled, i.e., whether it accepts run-commands. This
michael@13 304 variable just has to be printed, because is already set in current
michael@13 305 script environment.
michael@13 306 .ie n .IP "\fIpackage\fR\*(C`_usable\*(C'" 4
michael@13 307 .el .IP "\fIpackage\fR\f(CW\*(C`_usable\*(C'\fR" 4
michael@13 308 .IX Item "package_usable"
michael@13 309 Whether package is usable, i.e., whether it is already correctly
michael@13 310 configured, etc. This variable has to be individually determined.
michael@13 311 .ie n .IP "\fIpackage\fR\*(C`_active\*(C'" 4
michael@13 312 .el .IP "\fIpackage\fR\f(CW\*(C`_active\*(C'\fR" 4
michael@13 313 .IX Item "package_active"
michael@13 314 Whether package is active, i.e., whether it is already running.
michael@13 315 This variable has to be individually determined.
michael@13 316 .RE
michael@13 317 .RS 4
michael@13 318 .RE
michael@428 319 .ie n .IP "%monthly [\fB\-u\fR \fIuser\fR] [\fB\-p\fR \fIpriority\fR]" 4
michael@13 320 .el .IP "\f(CW%monthly\fR [\fB\-u\fR \fIuser\fR] [\fB\-p\fR \fIpriority\fR]" 4
michael@13 321 .IX Item "%monthly [-u user] [-p priority]"
michael@13 322 .PD 0
michael@428 323 .ie n .IP "%weekly [\fB\-u\fR \fIuser\fR] [\fB\-p\fR \fIpriority\fR]" 4
michael@13 324 .el .IP "\f(CW%weekly\fR [\fB\-u\fR \fIuser\fR] [\fB\-p\fR \fIpriority\fR]" 4
michael@13 325 .IX Item "%weekly [-u user] [-p priority]"
michael@428 326 .ie n .IP "%hourly [\fB\-u\fR \fIuser\fR] [\fB\-p\fR \fIpriority\fR]" 4
michael@13 327 .el .IP "\f(CW%hourly\fR [\fB\-u\fR \fIuser\fR] [\fB\-p\fR \fIpriority\fR]" 4
michael@13 328 .IX Item "%hourly [-u user] [-p priority]"
michael@428 329 .ie n .IP "%quarterly [\fB\-u\fR \fIuser\fR] [\fB\-p\fR \fIpriority\fR]" 4
michael@13 330 .el .IP "\f(CW%quarterly\fR [\fB\-u\fR \fIuser\fR] [\fB\-p\fR \fIpriority\fR]" 4
michael@13 331 .IX Item "%quarterly [-u user] [-p priority]"
michael@13 332 .PD
michael@13 333 These sections should perform periodical tasks for a package and
michael@13 334 are executed on a monthly, weekly, hourly or quarterly basis.
michael@13 335 .ie n .IP "%env" 4
michael@13 336 .el .IP "\f(CW%env\fR" 4
michael@13 337 .IX Item "%env"
michael@13 338 This section is intended to export one or more environment variables
michael@13 339 which are imported into the shell environment of the caller through the
michael@13 340 \&\fB\-\-eval\fR command line option.
michael@13 341 .RE
michael@13 342 .RS 4
michael@13 343 .RE
michael@13 344 .IP "\fBCustom Sections\fR" 4
michael@13 345 .IX Item "Custom Sections"
michael@13 346 All other sections are custom ones and can be fully individual to each
michael@13 347 package. Some often seen sections are \f(CW%reload\fR (just reload the
michael@13 348 configuration without full stop and start procedure), \f(CW%info\fR (output
michael@13 349 arbitrary information about package), etc.
michael@428 350 .ie n .SS "RUN-COMMAND \s-1CONFIGURATION\s0 (\*(C`@l_prefix@/bin/openpkg rc.conf\*(C')"
michael@428 351 .el .SS "RUN-COMMAND \s-1CONFIGURATION\s0 (\f(CW\*(C`@l_prefix@/bin/openpkg rc.conf\*(C'\fP)"
michael@13 352 .IX Subsection "RUN-COMMAND CONFIGURATION (@l_prefix@/bin/openpkg rc.conf)"
michael@13 353 The run-command configuration variables defined in the "\f(CW%config\fR"
michael@13 354 sections of all installed packages can be overridden by the
michael@13 355 administrator in the global file \f(CW\*(C`@l_prefix@/bin/openpkg rc.conf\*(C'\fR. This file is
michael@13 356 usually empty, but can be filled with Bourne-Shell compatible variable
michael@13 357 assignment statements like "\fIpackage\fR\f(CW\*(C`_\*(C'\fR\fIvariable\fR=\fIvalue\fR".
michael@428 358 .ie n .SS "RUN-COMMAND \s-1FUNCTIONS\s0 (\*(C`@l_prefix@/bin/openpkg rc.func\*(C')"
michael@428 359 .el .SS "RUN-COMMAND \s-1FUNCTIONS\s0 (\f(CW\*(C`@l_prefix@/bin/openpkg rc.func\*(C'\fP)"
michael@13 360 .IX Subsection "RUN-COMMAND FUNCTIONS (@l_prefix@/bin/openpkg rc.func)"
michael@13 361 The file \f(CW\*(C`@l_prefix@/bin/openpkg rc.func\*(C'\fR is prepended to the scripts of all
michael@13 362 executed run-command sections and provides reusable functions.
michael@13 363 Currently the following functions are defined:
michael@13 364 .IP "\fBrcMsg\fR [\fB\-e\fR] [\fB\-w\fR] \fImessage\fR" 4
michael@13 365 .IX Item "rcMsg [-e] [-w] message"
michael@13 366 Print a message to the output device of the run-command caller. The
michael@13 367 message is printed to the captured \fIstderr\fR (but are visible to
michael@13 368 the caller of the run-command script only if the script fails). All
michael@13 369 messages are prefixed with "\f(CW\*(C`rc:\*(C'\fR". If option \fB\-e\fR is given, the
michael@13 370 prefix is "\f(CW\*(C`rc:ERROR:\*(C'\fR". If option \fB\-w\fR is given, the prefix is
michael@13 371 "\f(CW\*(C`rc:WARNING:\*(C'\fR".
michael@13 372 .IP "\fBrcPath\fR [\fB\-a\fR] [\fB\-r\fR] [\fB\-p\fR] [\fB\-e\fR] \fIvariable\fR \fIdir\fR [\fIdir\fR ...]" 4
michael@13 373 .IX Item "rcPath [-a] [-r] [-p] [-e] variable dir [dir ...]"
michael@13 374 Add (option \fB\-a\fR) or remove (option \fB\-r\fR) one or more \fIdir\fRectories
michael@13 375 to/from the colon-separated value of a \fIvar\fRable. By default, on
michael@13 376 addition, the directory is appended to the end, if option \fB\-p\fR is used
michael@13 377 the directory is prepended to the start. If option \fB\-e\fR is used, the
michael@13 378 directories are added only if they exist on the underlying filesystem.
michael@13 379 Use this function for conveniently manipulating \f(CW\*(C`PATH\*(C'\fR, \f(CW\*(C`MANPATH\*(C'\fR,
michael@13 380 \&\f(CW\*(C`INFOPATH\*(C'\fR, \f(CW\*(C`LD_LIBRARY_PATH\*(C'\fR and similar variables.
michael@13 381 .IP "\fBrcTmp\fR [\fB\-i\fR] [\fB\-f\fR] [\fB\-n\fR \fIname\fR] [\fB\-k\fR]" 4
michael@13 382 .IX Item "rcTmp [-i] [-f] [-n name] [-k]"
michael@13 383 Convenience interface to secure temporary file handling. Option \fB\-i\fR
michael@13 384 first has to be used to initialize a secure temporary directory (option
michael@13 385 \&\fB\-k\fR later will kill this again). Under option \fB\-f\fR you then can get
michael@13 386 reasonable temporary filenames under the created temporary directory. By
michael@13 387 default, the temporary filename is just "\f(CW\*(C`tmp\*(C'\fR", but can be specified
michael@13 388 with option \fB\-n\fR to be \fIname\fR.
michael@13 389 .IP "\fBrcService\fR \fIpackage\fR \fIstatus\fR \fIvalue\fR" 4
michael@13 390 .IX Item "rcService package status value"
michael@13 391 Convenience interface to checking the \f(CW%status\fR variables
michael@13 392 \&\fIpackage\fR\f(CW\*(C`_\*(C'\fR\fIstatus\fR which have to be provided by the \f(CW%config\fR (if
michael@13 393 \&\fIstatus\fR is "\f(CW\*(C`enable\*(C'\fR" this is enough) and \f(CW%status\fR (if \fIstatus\fR is
michael@13 394 "\f(CW\*(C`enable\*(C'\fR\*(L", \*(R"\f(CW\*(C`usable\*(C'\fR\*(L" and \*(R"\f(CW\*(C`active\*(C'\fR"). The \fBrcService\fR especially
michael@13 395 caches the resolving of the variable values. Returns 0 if the resolved
michael@13 396 value is \fIvalue\fR, else returns 1.
michael@13 397 .IP "\fBrcVarIsYes\fR \fIname\fR" 4
michael@13 398 .IX Item "rcVarIsYes name"
michael@13 399 Checks whether variable \fIname\fR has a value of "\f(CW\*(C`yes\*(C'\fR\*(L", \*(R"\f(CW\*(C`true\*(C'\fR\*(L",
michael@13 400 \&\*(R"\f(CW\*(C`on\*(C'\fR\*(L", or \*(R"\f(CW1\fR" (with arbitrary lower or upper case letters). Returns
michael@13 401 0 if value is one of these positive ones, else returns 1.
michael@13 402 .SH "EXAMPLES"
michael@13 403 .IX Header "EXAMPLES"
michael@13 404 First, an example run-command script \f(CW\*(C`@l_prefix@/bin/openpkg rc.d/rc.foo\*(C'\fR for a
michael@13 405 fictional daemon package "\f(CW\*(C`foo\*(C'\fR":
michael@13 406 .PP
michael@13 407 .Vb 8
michael@13 408 \& %config
michael@13 409 \& foo_enable="${openpkg_rc_def}"
michael@13 410 \& foo_listen="127.0.0.1"
michael@13 411 \& foo_log_prolog="true"
michael@13 412 \& foo_log_epilog="true"
michael@13 413 \& foo_log_numfiles="10"
michael@13 414 \& foo_log_minsize="1M"
michael@13 415 \& foo_log_complevel="9"
michael@428 416 \&
michael@13 417 \& %common
michael@13 418 \& foo_homedir="@l_prefix@/share/foo"
michael@13 419 \& foo_cfgfile="@l_prefix@/etc/foo/foo.cfg"
michael@13 420 \& foo_pidfile="@l_prefix@/var/foo/foo.pid"
michael@13 421 \& foo_logfile="@l_prefix@/var/foo/foo.log"
michael@13 422 \& foo_signal () {
michael@428 423 \& if [ \-f ${foo_pidfile} ]; then
michael@428 424 \& kill \-$1 \`cat ${foo_pidfile}\`
michael@13 425 \& return $?
michael@13 426 \& else
michael@13 427 \& return 1
michael@13 428 \& fi
michael@13 429 \& }
michael@428 430 \&
michael@13 431 \& %status
michael@13 432 \& foo_usable="no"
michael@428 433 \& if [ ".\`grep \*(Aq<<PASSWORD>>\*(Aq ${foo_cfgfile}\`" = . ]; then
michael@13 434 \& foo_usable="yes"
michael@13 435 \& fi
michael@13 436 \& foo_active="no"
michael@428 437 \& if [ \-f ${foo_pidfile} ]; then
michael@13 438 \& foo_signal 0
michael@428 439 \& if [ $? \-eq 0 ]; then
michael@13 440 \& foo_active="yes"
michael@13 441 \& fi
michael@13 442 \& fi
michael@13 443 \& echo "foo_enable=${foo_enable}"
michael@13 444 \& echo "foo_usable=${foo_usable}"
michael@13 445 \& echo "foo_active=${foo_active}"
michael@428 446 \&
michael@13 447 \& %start
michael@13 448 \& rcService foo enable yes || exit 0
michael@13 449 \& rcService foo active yes && exit 0
michael@428 450 \& @l_prefix@/sbin/foo \-\-listen ${foo_listen}
michael@428 451 \&
michael@13 452 \& %stop
michael@13 453 \& rcService foo enable yes || exit 0
michael@13 454 \& rcService foo active yes || exit 0
michael@13 455 \& foo_signal TERM
michael@428 456 \&
michael@13 457 \& %restart
michael@13 458 \& rcService foo enable yes || exit 0
michael@13 459 \& rcService foo active yes || exit 0
michael@13 460 \& rc foo stop start
michael@428 461 \&
michael@13 462 \& %daily
michael@13 463 \& rcService foo enable yes || exit 0
michael@428 464 \& shtool rotate \-f \e
michael@428 465 \& \-n ${foo_log_numfiles} \-s ${foo_log_minsize} \-d \e
michael@428 466 \& \-z ${foo_log_complevel} \-o @l_rusr@ \-g @l_rgrp@ \-m 644 \e
michael@428 467 \& \-P "${foo_log_prolog}" \-E "${foo_log_epilog}" \e
michael@13 468 \& ${foo_logfile}
michael@428 469 \&
michael@13 470 \& %env
michael@13 471 \& if rcService foo enable yes; then
michael@13 472 \& FOO_HOME="$foo_homedir"
michael@13 473 \& export FOO_HOME
michael@13 474 \& fi
michael@13 475 .Ve
michael@13 476 .PP
michael@13 477 Now, show all run-command configuration variables, their
michael@13 478 default values and their effective values of package "\f(CW\*(C`foo\*(C'\fR":
michael@13 479 .PP
michael@13 480 .Vb 1
michael@428 481 \& $ @l_prefix@/bin/openpkg rc \-\-config | grep "^foo_"
michael@13 482 .Ve
michael@13 483 .PP
michael@13 484 Override the default value of a run-command configuration
michael@13 485 variable \f(CW\*(C`foo_listen\*(C'\fR:
michael@13 486 .PP
michael@13 487 .Vb 1
michael@428 488 \& $ echo \*(Aqfoo_listen="192.168.0.1"\*(Aq >>@l_prefix@/bin/openpkg rc.conf
michael@13 489 .Ve
michael@13 490 .PP
michael@13 491 Stop and start from scratch the package "\f(CW\*(C`foo\*(C'\fR":
michael@13 492 .PP
michael@13 493 .Vb 1
michael@13 494 \& $ @l_prefix@/bin/openpkg rc foo stop start
michael@13 495 .Ve
michael@13 496 .PP
michael@13 497 Query the effective value of run-command configuration
michael@13 498 variable \f(CW\*(C`foo_enable\*(C'\fR in a script:
michael@13 499 .PP
michael@13 500 .Vb 1
michael@428 501 \& if [ ".\`@l_prefix@/bin/openpkg rc \-q foo_enable\`" = .yes ]; then ...
michael@13 502 .Ve
michael@13 503 .PP
michael@13 504 Import all environment settings from all (including "\f(CW\*(C`foo\*(C'\fR") installed
michael@13 505 packages into the current Bourne-Shell environment:
michael@13 506 .PP
michael@13 507 .Vb 2
michael@428 508 \& $ eval \`@l_prefix@/bin/openpkg rc \-\-eval all env\`
michael@13 509 \& $ echo $FOO_HOME
michael@13 510 .Ve
michael@13 511 .SH "SEE ALSO"
michael@13 512 .IX Header "SEE ALSO"
michael@13 513 \&\fBOpenPKG\fR http://www.openpkg.org/
michael@13 514 .SH "HISTORY"
michael@13 515 .IX Header "HISTORY"
michael@13 516 The \fBOpenPKG\fR run-command facility consisting of the scripts \f(CW\*(C`rc\*(C'\fR
michael@13 517 and \f(CW\*(C`rc.func\*(C'\fR were originally invented in November 2000 by Ralf S.
michael@13 518 Engelschall for \fBOpenPKG\fR. They were completely worked off from scratch
michael@13 519 in July 2003 for \fBOpenPKG 1.3\fR.
michael@13 520 .SH "AUTHOR"
michael@13 521 .IX Header "AUTHOR"
michael@13 522 .Vb 3
michael@13 523 \& Ralf S. Engelschall
michael@13 524 \& rse@engelschall.com
michael@13 525 \& www.engelschall.com
michael@13 526 .Ve

mercurial