Mon, 28 Jan 2013 17:37:18 +0100
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 |