6833d4dfa323baefd6268a4926e651feffe8cb51
[openafs.git] / doc / man-pages / pod5 / package.pod
1 =head1 NAME
2
3 package Configuration File - Provides instructions for the package command
4
5 =head1 DESCRIPTION
6
7 The package configuration file defines the file system elements
8 that the B<package> command creates or alters on the local disk of an
9 AFS client machine it is configuring. Use the B<-config> or
10 B<-fullconfig> argument to the B<package> command to identify
11 the configuration file to use.
12
13 Summary of Configuration File Instructions
14
15 The configuration file can include one or more instances of each of the
16 following instructions, each on its own line. A more detailed
17 description of each instruction's syntax follows this list.
18
19 =over 4
20
21 =item B
22
23 Defines a block special device, such as a disk, which deals with input in
24 units of multi-byte command blocks
25
26 =item C
27
28 Defines a character special device, such as a terminal or tty, which deals
29 with input in single character units
30
31 =item D
32
33 Creates a directory
34
35 =item F
36
37 Creates or alters a file to match the contents of a specified source file
38
39 =item L
40
41 Creates a symbolic link
42
43 =item S
44
45 Defines a socket, which is a communications device for UDP and TCP/IP
46 connections
47
48 =item %define
49
50 Defines a variable or declares a string as defined
51
52 =item %ifdef
53
54 Specifies an action to perform if a certain string is declared or defined
55
56 =item %ifndef
57
58 Specifies an action to perform if a certain string is not declared or
59 defined
60
61 =item %include
62
63 Includes a library file
64
65 =item %undef
66
67 Declares a string not to be defined, or a variable no longer to have a
68 value
69
70 =back
71
72 The B and C Instructions for Defining Block and Character Special
73 Devices
74 L<(1)>
75 L<(1)>
76 L<(1)>
77 L<(1)>
78 L<(1)>
79 L<(1)>
80 L<(1)>
81 L<(1)>
82 L<(1)>
83 L<(1)>
84 L<(1)>
85 L<(1)>
86 L<(1)>
87 L<(1)>
88 L<(1)>
89
90 The B<B> instruction in a package configuration file
91 defines a block special device, such as a disk, that deals with input in units
92 of multi-byte command blocks. The B<C> instruction defines a
93 character special device, such as a terminal or tty, that deals with input in
94 single character units. They share a common syntax:
95
96    {B<B >| C}   I<device_name>  I<major_device>  I<minor_device>  I<owner>  I<group>  I<mode_bits>
97
98 where
99
100 =over 4
101
102 =item B
103
104 Indicates the definition of a block special device. It must be a
105 capital letter.
106
107 =item C
108
109 Indicates the definition of character special device. It must be a
110 capital letter.
111
112 =item I<device_name
113 >
114
115 Names the special device to define. To learn the name format
116 appropriate to the machine's system type, consult the hardware or
117 operating system documentation.
118
119 =item I<major_device
120 >
121
122 Specifies the device's major device number in decimal format.
123 To learn the correct value for the machine's system type, consult the
124 hardware or operating system documentation.
125
126 =item I<minor_device
127 >
128
129 Specifies the device's minor device number in one of hexadecimal,
130 octal, or decimal format. Precede a hexadecimal number with the string
131 B<0x> (zero and the letter B<x>) or an octal number with a
132 B<0> (zero). A number without either prefix is interpreted as a
133 decimal. To learn the correct value for the machine's system type,
134 consult the hardware or operating system documentation.
135
136 =item I<owner
137 >
138
139 Specifies the username or UNIX user ID (UID) of the user to be designated
140 the device's owner in the output from the UNIX B<ls -l>
141 command.
142
143 =item I<group
144 >
145
146 Specifies the group name or UNIX group ID (GID) of the group to be
147 designated the device's group in the output from the UNIX B<ls
148 -lg> command.
149
150 =item I<mode_bits
151 >
152
153 Defines the device's UNIX mode bits. Acceptable values are the
154 standard three- or four-digit numbers corresponding to combinations of
155 permissions. Examples: B<755> corresponds to
156 B<rwxr-xr-x>, and B<644> to B<rw-r--r-->.
157
158 =back
159
160 The D Instruction for Creating a Directory
161 L<(1)>
162 L<(1)>
163 L<(1)>
164 L<(1)>
165 L<(1)>
166 L<(1)>
167 L<(1)>
168
169 The B<D> instruction in a package configuration file
170 creates a directory on the local disk. If a symbolic link, file, or
171 other element on the local disk has the same name, it is replaced with a
172 directory. If the directory already exists, its owner, group, and mode
173 bits are changed if necessary to conform with the instruction. The
174 instruction has the following syntax:
175
176    D[I<update_code>]  I<directory>  I<owner>  I<group>  I<mode_bits>
177
178 where
179
180 =over 4
181
182 =item D
183
184 Indicates the creation of a directory. It must be a capital
185 letter.
186
187 =item I<update_code
188 >
189
190 Modulates the directory creation instruction. It is optional and
191 follows the letter B<D> directly, without an intervening space.
192 Choose one of the two acceptable values: 
193
194 =over 4
195
196 =item X
197
198 Indicates that the directory is a lost+found directory (used by
199 the B<fsck> program).
200
201 =item R
202
203 Removes any subdirectory (along its contents) or file that exists in the
204 existing directory on the local disk but for which an instruction does not
205 appear in the configuration file.
206
207 =back
208
209 =item I<directory
210 >
211
212 Specifies the full pathname of the directory to create.
213
214 =item I<owner
215 >
216
217 Specifies the username or UNIX user ID (UID) of the user to be designated
218 the directory's owner in the output from the UNIX B<ls -ld>
219 command.
220
221 =item I<group
222 >
223
224 Specifies the name or UNIX group ID (GID) of the group to be designated
225 the directory's group in the output from the UNIX B<ls -lgd>
226 command.
227
228 =item I<mode_bits
229 >
230
231 Defines the directory's UNIX mode bits. Acceptable values are
232 the standard three- or four-digit numbers corresponding to combinations of
233 permissions. Examples: B<755> corresponds to
234 B<drwxr-xr-x>, and B<644> to B<drw-r--r-->.
235
236 =back
237
238 The F Instruction for Creating or Updating a File
239 L<(1)>
240 L<(1)>
241 L<(1)>
242 L<(1)>
243 L<(1)>
244 L<(1)>
245 L<(1)>
246
247 The B<F> instruction in a package configuration file
248 creates or updates a file on the local disk by copying in the contents of the
249 indicated source file, which can reside in AFS or on the local disk. If
250 the B<package> command interpreter cannot access the source file, it
251 exits without executing any instruction in the configuration file.
252
253 If a file with the same name already exists on disk, the package
254 command overwrites it with the contents of the source file, unless the
255 B<I> update code is used to prevent that. To add a
256 B<.old> extension to the current version of the file, include
257 the B<O> update code. To have the machine reboot automatically
258 after the B<package> program completes, include the B<Q>
259 update code.
260
261 If a symbolic link, directory, or other element on the local disk has the
262 same name, it is replaced with the file (a directory's contents are first
263 removed as necessary).
264
265 The instruction has the following syntax:
266
267    F[I<update_code>]  I<file>  I<source_file>  [I<owner  group  mode_bits>]
268
269 where
270
271 =over 4
272
273 =item F
274
275 Indicates the creation or update of a file. It must be a capital
276 letter.
277
278 =item I<update_code
279 >
280
281 Modulates the file creation instruction. It is optional and follows
282 the letter B<F> directly, without an intervening space. Choose
283 one or more of the four acceptable values, and list them in any order: 
284
285 =over 4
286
287 =item A
288
289 Indicates that the pathname in the I<source_file> field is the
290 complete pathname of the source file, including the filename. If this
291 argument is omitted, the B<package> command appends the pathname in
292 the I< file> field to the pathname in the I<source_file> field to
293 derive the source file's full name. This code allows the source
294 and target filenames to differ.
295
296 =item I
297
298 Preserves the existing file called I<file>, rather than overwriting
299 it.
300
301 =item O
302
303 Saves the existing version of the file by appending a
304 B<.old> extension to it.
305
306 =item Q
307
308 Causes the package command to exit with status code
309 B<4> if it overwrites the file. If the standard
310 B<package>-related changes have been made to the machine's AFS
311 initialization file, then status code B<4> causes the machine to
312 reboot automatically. Use this code when the machine must reboot if
313 updates to the file are to have any effect (for example, if the operating
314 system file--B</vmunix> or equivalent--has changed).
315
316 =back
317
318 =item I<file
319 >
320
321 Specifies the complete pathname on the local disk of the file to create or
322 update, including the filename as the final element.
323
324 =item I<source_file
325 >
326
327 Specifies the pathname (local or AFS) of the file to copy to the local
328 disk.
329
330 If the A update code is included, specify the source file's
331 complete pathname. Otherwise, the B<package> command derives
332 the source file's full name by appending the I<file> pathname to
333 this pathname. For example, if the B<A> update code is not
334 included and the file B</afs/abc.com/rs_aix42/bin/grep> is the
335 source file for the B</bin/grep> binary, the proper value in this
336 field is B</afs/abc.com/rs_aix42>.
337
338 =item I<owner
339 >
340
341 Specifies the username or UNIX user ID (UID) of the user to be designated
342 the file's owner in the output from the UNIX B<ls -l>
343 command. 
344
345 To copy the source file's owner to the target file, leave this field
346 empty. In this case, the I<group> and I<mode_bits> fields
347 must also be empty.
348
349 =item I<group
350 >
351
352 Specifies the name or UNIX group ID (GID) of the group to be designated
353 the file's group in the output from the UNIX B<ls -lg>
354 command. 
355
356 To copy the source file's group to the target file, leave this field
357 empty. In this case, the I< owner> and I<mode_bits> fields
358 must also be empty.
359
360 =item I<mode_bits
361 >
362
363 Defines the file's UNIX mode bits. Acceptable values are the
364 standard three- or four-digit numbers corresponding to combinations of
365 permissions. Examples: B<755> corresponds to
366 B<rwxr-xr-x>, and B<644> to B<rw-r--r-->. 
367
368 To copy the source file's mode bits to the target file, leave this
369 field empty. In this case, the I<owner> and I<group> fields
370 must also be empty.
371
372 =back
373
374 The L Instruction for Creating a Symbolic Link
375 L<(1)>
376 L<(1)>
377 L<(1)>
378 L<(1)>
379 L<(1)>
380 L<(1)>
381 L<(1)>
382
383 The B<L> instruction in a package configuration file
384 creates a symbolic link on the local disk to a directory or file that exists
385 either in AFS or elsewhere on the local disk. As with the standard UNIX
386 B<ln -s> command, the link is created even if the actual file or
387 directory does not exist.
388
389 If a file or directory on the local disk already has the same name, the
390 B<package> command replaces it with a symbolic link.
391
392 The instruction has the following syntax:
393
394    L[I<update_code>]  I<link>  I<actual_path>  [I<owner  group  mode_bits>]
395
396 where
397
398 =over 4
399
400 =item L
401
402 Indicates the creation of a symbolic link. It must be a capital
403 letter.
404
405 =item I<update_code
406 >
407
408 Modulates the link creation instruction. It is optional and follows
409 the letter B<L> directly, without an intervening space. Choose
410 one or both of the acceptable values, and list them in any order: 
411
412 =over 4
413
414 =item A
415
416 Indicates that the pathname in the I<actual_path> field is the
417 complete pathname of the actual directory or file (including the filename for
418 a file). If this argument is omitted, the B<package> command
419 appends the value in the I<link> field to the pathname in the
420 I<actual_path> field to derive the actual directory or file's full
421 name. This code allows the name of the symbolic link and actual
422 directory or file to differ.
423
424 =item I
425
426 Preserves the existing symbolic link called I<link>, rather than
427 overwriting it.
428
429 =back
430
431 =item I<link
432 >
433
434 Specifies the complete local disk pathname of the symbolic link to
435 create.
436
437 =item I<actual_path
438 >
439
440 Specifies the pathname (local or AFS) of the directory or file to which
441 the link refers. If the B<A> update code is included, specify
442 the directory or file's complete pathname. Otherwise, the
443 B<package> command derives the actual directory or file's full
444 name by appending the value in the I<link> field to this
445 pathname. For example, if the B<A> update code is not included
446 and B</etc/ftpd> is a symbolic link to the file
447 B</afs/abc.com/sun4x_56/etc/ftpd>, the proper value in this
448 field is B</afs/abc.com/sun4x_56>.
449
450 The package command interpreter correctly handles pathnames that
451 begin with the B<./> (period, slash) or
452 B<../> (two periods, slash) notation, interpreting them
453 relative to the current working directory from which the B<package>
454 command is invoked.
455
456 =item I<owner
457 >
458
459 Specifies the username or UNIX user ID (UID) of the user to be designated
460 the symbolic link's owner in the output from the UNIX B<ls -l>
461 command.
462
463 To designate the issuer of the package command (usually, the
464 local superuser B<root>) as the symbolic link's owner, leave this
465 field empty. In this case, the I<group> and I<mode_bits>
466 fields must also be empty.
467
468 =item I<group
469 >
470
471 Specifies the name or UNIX group ID (GID) of the group to be designated
472 the link's group in the output from the UNIX B<ls -lg>
473 command.
474
475 To have the symbolic link's group match the default group associated
476 with the B<package> command's issuer, leave this field
477 empty. The issuer is usually the local superuser B<root> and
478 the default group is designated in the issuer's entry in the local
479 B</etc/passwd> file or equivalent. If this field is left empty,
480 the I<owner> and I<mode_bits> fields must also be empty.
481
482 =item I<mode_bits
483 >
484
485 Defines the symbolic link's UNIX mode bits. Acceptable values
486 are the standard three- or four-digit numbers corresponding to combinations of
487 permissions. Examples: B<755> corresponds to
488 B<rwxr-xr-x>, and B<644> to B<rw-r--r-->.
489
490 Leaving this field empty sets the symbolic link's mode bits to
491 B<777> (B<rwxrwxrwx>). In this case, the I<owner>
492 and I<group> fields must also be empty.
493
494 =back
495
496 The S Instruction for Creating a Socket
497 L<(1)>
498 L<(1)>
499 L<(1)>
500 L<(1)>
501 L<(1)>
502 L<(1)>
503 L<(1)>
504
505 The B<S> instruction in a package configuration file
506 creates a socket (a communications device for UDP or TCP/IP connections) on
507 the local disk. The instruction has the following syntax:
508
509    S  I<socket> [I<owner  group  mode_bits>]
510
511 where
512
513 =over 4
514
515 =item S
516
517 Indicates the creation of a socket. It must be a capital
518 letter.
519
520 =item I<socket
521 >
522
523 Names the socket. The proper format depends on the local
524 machine's operating system.
525
526 =item I<owner
527 >
528
529 Specifies the username or UNIX user ID (UID) of the user to be designated
530 the socket's owner in the output from the UNIX B<ls -l>
531 command.
532
533 To designate the issuer of the package command (usually, the
534 local superuser B<root>) as the socket's owner, leave this field
535 empty. In this case, the I<group> and I<mode_bits> fields
536 must also be empty.
537
538 =item I<group
539 >
540
541 Specifies the name or UNIX group ID (GID) of the group to be designated
542 the socket's group in the output from the UNIX B<ls -lg>
543 command.
544
545 To have the symbolic link's group match the default group associated
546 with the B<package> command's issuer, leave this field
547 empty. The issuer is usually the local superuser B<root> and
548 the default group is designated in the issuer's entry in the local
549 B</etc/passwd> file or equivalent. If this field is left empty,
550 the I<owner> and I<mode_bits> fields must also be empty.
551
552 =item I<mode_bits
553 >
554
555 Defines the socket's UNIX mode bits. Acceptable values are the
556 standard three- or four-digit numbers corresponding to combinations of
557 permissions. Examples: B<755> corresponds to
558 B<rwxr-xr-x>, and B<644> to B<rw-r--r-->.
559
560 Leaving this field empty sets the symbolic link's mode bits to
561 B<777> (B<rwxrwxrwx>), modulated by the cell's
562 umask. In this case, the I<owner> and I<group> fields must
563 also be empty.
564
565 =back
566
567 The %define or %undef Instructions Declaring or Undeclaring a
568 Definition
569 L<(1)>
570 L<(1)>
571 L<(1)>
572 L<(1)>
573 L<(1)>
574 L<(1)>
575
576 The B<%define> instruction in a package configuration
577 file declares or defines a variable, depending on its number of
578 arguments:
579
580 =over 4
581
582 =item *
583
584 If followed by a single argument, it declares that argument to be
585 defined. The argument is then available as a controller when mentioned
586 in B<%ifdef> and B<%ifndef> statements, which evaluate to
587 B<true> and B<false> respectively.
588
589
590 =item *
591
592 If followed by two arguments, it defines the second argument as the value
593 of the first. When the first argument appears later in this prototype
594 or other prototype or library files as a variable--surrounded by curly
595 braces and preceded by a dollar sign, as in the example
596 C<${variable}>--the B<package> command interpreter
597 substitutes the second argument for it.
598
599
600 =back
601
602 The %undef statement negates the effect of a previous
603 B<%define> statement, declaring its argument to be defined no longer,
604 or to have a value no longer if it is a variable.
605
606 The syntax for the two types of instruction are as follows:
607
608    %define  I<declaration>
609    %define  I<variable>  I<value>
610    %undef  I<declaration>
611    %undef  I<variable>
612
613 where
614
615 =over 4
616
617 =item %define
618
619 Indicates a definition statement.
620
621 =item %undef
622
623 Indicates a statement that negates a definition.
624
625 =item I<declaration
626 >
627
628 Names the string being declared by a %define statement, or
629 negated by an B<%undef> statement.
630
631 =item I<variable
632 >
633
634 Specifies the name of the variable that a %define statement is
635 defining, or an B<%undef> statement is negating.
636
637 =item I<value
638 >
639
640 Specifies the value to substitute for the string in the I<variable>
641 field when it appears in the appropriate format (surrounded by curly braces
642 and preceded by a dollar sign, as in the example C<${variable}>), in
643 this or other prototype and library files. It can include one or more
644 words.
645
646 =back
647
648 The %ifdef and %ifndef Instructions for Specifying a Conditional
649 Action to Perform
650 L<(1)>
651 L<(1)>
652 L<(1)>
653 L<(1)>
654 L<(1)>
655 L<(1)>
656
657 The B<%ifdef> instruction in a package configuration
658 file specifies one or more actions to perform if the indicated string has been
659 declared by a single-argument B<%define> statement, or is a variable
660 for which a value has been defined by a two-argument B<%define>
661 statement.
662
663 Similarly, the %ifndef instruction specifies one or more actions
664 to perform if the indicated string has not been declared or is a variable
665 without a value, either because no B<%define> statement has defined it
666 or an B<%undef> statement has undefined it.
667
668 In both cases, the optional %else statement specifies one or
669 more alternate actions to perform if the first statement evaluates to
670 B<false>. (For an B<%ifdef> statement, the
671 B<%else> statement is executed if the indicated string has never been
672 declared or is a variable without a value, or if an B<%undef>
673 statement has undefined either one; for an B<%ifndef> statement,
674 it is executed if the string has been declared or is a variable with a
675 value.)
676
677 It is possible to nest any number of %ifdef and
678 B<%ifndef> statements.
679
680 The two types of statement share a common syntax:
681
682    %ifdef | ifndef   I<declaration> 
683                                   I<action>+
684    [%else [I<declaration>] 
685                   I<alternate_action>+]
686    %endif I<declaration>
687
688 where
689
690 =over 4
691
692 =item ifdef
693
694 Indicates that the statement evaluates as true if the string in
695 the I<declaration> field is declared or is a variable with a defined
696 value.
697
698 =item ifndef
699
700 Indicates that the statement evaluates as true if the string in
701 the I<declaration> field is not declared or is a variable without a
702 defined value.
703
704 =item I<declaration
705 >
706
707 Specifies the string that must be declared or the variable name that must
708 have a defined value for an B<%ifdef> statement to evaluate as
709 B<true>, which results in the specified action being performed.
710 For an B<%ifndef> statement, the string must not be declared or the
711 variable must have no defined value for the statement to evaluate as
712 B<true>. The first and third occurrences of
713 I<declaration> (the latter following the string B<%endif>) are
714 required. The second occurrence (following the string B<%else>)
715 is optional, serving only to clarify to which B<%ifdef> or
716 B<%ifndef> statement the B<%else> statement belongs.
717
718 =item I<action
719 >
720
721 Specifies each action to perform if the %ifdef or
722 B<%ifndef> statement evaluates as B<true>. Each action
723 must appear on a separate line. Acceptable types of actions are other
724 statements beginning with a percent sign and definition instructions.
725
726 =item I<alternate_action
727 >
728
729 Specifies each action to perform if the %ifdef or
730 B<%ifndef> statement evaluates to B<false>. Each action
731 must appear on a separate line. Acceptable types of actions are other
732 statements beginning with a percent sign and definition instructions.
733
734 =back
735
736 The %include Instruction for Including a Library File
737 L<(1)>
738 L<(1)>
739 L<(1)>
740
741 The B<%include> instruction in a package configuration
742 file includes the contents of the indicated library file in a configuration
743 file that results from the compilation of the prototype file in which the
744 B<%include> instruction appears. It has the following
745 syntax:
746
747    %include  I<pathname>
748
749 where
750
751 =over 4
752
753 =item %include
754
755 Indicates a library file include statement.
756
757 =item I<pathname
758 >
759
760 Specifies the complete pathname of the library file to include. It
761 can be in AFS or on the local disk, and can include one or more
762 variables.
763
764 =back
765
766 =head1 CAUTIONS
767
768 The configuration file must be completely correct. If there are any
769 syntax errors or incorrect values, the B<package> command interpreter
770 exits without executing any instruction.
771
772 =head1 EXAMPLES
773
774 The following example B<B> and C instructions define a
775 disk B</dev/hd0a> with major and minor device numbers B<1> and
776 B<0> and mode bits of B<-rw-r--r-->, and a tty
777 B</dev/ttyp5> with major and minor device numbers B<6> and
778 B<5> and mode bits of B<-rw-rw-rw>. In both cases, the
779 owner is B<root> and the owning group B<wheel>.
780
781    B /dev/hd0a 1 0 root wheel 644
782    C /dev/ttyp5 6 5 root wheel 666
783
784 The following example D instruction creates the local
785 B</usr> directory with owner B<root> and group
786 B<wheel> and mode bits of B<drwxr-xr-x>. The
787 B<R> update code removes any files and subdirectories that reside in
788 the B</usr> directory (if it already exists) but do not appear in the
789 configuration file.
790
791    DR /usr root wheel 755
792
793 The following example F instruction, appropriate for a machine
794 running AIX 4.2 in the ABC Corporation cell, creates or updates the
795 local disk file B</bin/grep>, using
796 B</afs/abc.com/rs_aix42/bin/grep> as the source.
797
798    F /bin/grep /afs/abc.com/rs_aix42 root wheel 755
799
800 The next example F instruction creates the
801 B</usr/vice/etc/ThisCell> file and specifies an absolute pathname for
802 the source file, as indicated by the B<A> update code. The
803 B<Q> code makes the B<package> command return status code 4 as
804 it exits, prompting a reboot of the machine if the standard
805 B<package>-related changes have been made to the machine's AFS
806 initialization file. No values are provided for the owner, group and
807 mode bits, so the file inherits them from the source file.
808
809    FAQ /usr/vice/etc/ThisCell /afs/abc.com/common/etc/ThisCell
810
811 The following example L instruction, appropriate for a machine
812 running AIX 4.2 in the ABC Corporation cell, creates a symbolic link
813 from B</etc/ftpd> on the local disk to the file
814 B</afs/abc.com/rs_aix42/etc/ftpd>.
815
816    L /etc/ftpd /afs/abc.com/rs_aix42 root wheel 644
817
818 The following example S instruction defines the socket
819 B</dev/printer>.
820
821
822    S /dev/printer root wheel 777
823    
824
825 The following example %define instruction defines the value for
826 the variable C<${diskmode}>. This variable is used elsewhere in
827 the template to fill the I<owner_name>, I<group_name>, and
828 I<mode_bits> fields in a B<D>, B<F>, or B<L>
829 instruction.
830
831    %define diskmode root wheel 644
832
833 The following example %undef instruction declares the string
834 B<afsd> not to be defined.
835
836    %undef afsd
837
838 The following example %ifdef instruction specifies that if the
839 string C<rs_aix42> is currently declared, then when the prototype file
840 containing the instruction is compiled the three indicated library files are
841 included. There is no alternate action defined. There must be
842 B<%define> statements earlier in the prototype file to declare
843 B<rs_aix42> and to assign a value to the C<${wsadmin}>
844 variable.
845
846    %ifdef rs_aix42
847    %include ${wsadmin}/lib/rs_aix42.readonly
848    %include ${wsadmin}/lib/rs_aix42.generic
849    %include ${wsadmin}/lib/rs_aix42.generic.dev
850    %endif rs_aix42
851
852 The following example %ifndef instruction, appropriate for the
853 State University cell, defines C<stateu.edu> as the value of
854 the C<${cell}> variable if it does not already have a value.
855
856    %ifndef cell
857    %define cell stateu.edu
858    %endif cell
859
860 The following example %include instruction includes the library
861 file B<base.generic> from the B<lib> subdirectory of
862 the directory in which B<package>-related files reside. The
863 C<${wsadmin}> variable resolves to an actual pathname (such as
864 B</afs/abc.com/wsadmin>) during compilation.
865
866    %include ${wsadmin}/lib/base.generic
867
868 =head1 SEE ALSO
869
870 L<package(1)>
871
872 =head1 COPYRIGHT
873
874 IBM Corporation 2000. <http://www.ibm.com/> All Rights Reserved.
875
876 This documentation is covered by the IBM Public License Version 1.0.  It was
877 converted from HTML to POD by software written by Chas Williams and Russ
878 Allbery, based on work by Alf Wachsmann and Elizabeth Cassell.