openpkg/rc.8

Mon, 28 Jan 2013 17:37:18 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Mon, 28 Jan 2013 17:37:18 +0100
changeset 758
a2c6460cfb16
parent 427
71503088f51b
permissions
-rw-r--r--

Correct socket error reporting improvement with IPv6 portable code,
after helpful recommendation by Saúl Ibarra Corretgé on OSips devlist.

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