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