Entries in a prototype file consist of several fields of information separated by white space. Comment lines begin with a ``#'' and are ignored. The fields are described below and must appear in the order shown.
Once a file has the file type attribute v, it will always be volatile. For example, if a file being installed already exists and has the file type attribute v, then even if the version of the file being installed is not specified as volatile, the file type attribute will remain volatile.
For linked files, path1 indicates the destination of the link and path2 indicates the source file. (This format is mandatory for linked files.)
For symbolically linked files, when path2 is a relative pathname starting with ./ or ../, path2 is not considered relocatable. For example, if you enter a line such as:
s /foo/bar/etc/mount=../usr/sbin/mountpath1 (/foo/bar/etc/mount) will be a symbolic link to ../usr/sbin/mount.
For local pathnames, path1 indicates the pathname an object should have on the machine where the entry is to be installed and path2 indicates either a relative or fixed pathname to a file on the host machine which contains the actual contents.
A pathname can contain a variable specification, which will be resolved at the
time of installation.
This specification should have the form
$[A-Z] (see "Notices").
Special characters, such as an equal sign (``=''), are included in pathnames by surrounding the entire pathname in single quotes (as in, for example, '/usr/lib/~=').
Can be a variable specification in the form of $[A-Z] (see "Notices"). Will be resolved at installation time.
Can be a variable specification in the form of $[A-Z] (see "Notices"). Will be resolved at installation time.
An exclamation point (``!'') at the beginning of a line indicates that the line contains a command. These commands are used to incorporate files in other directories, to locate objects on a host machine, and to set permanent defaults. The following commands are available:
If either the mac, fixed, or inherited attribute is supplied, all three security attributes must be supplied. If the security attributes are supplied and the other attributes are not supplied, use ``-'' for mode, owner, and group.
The defaults do not apply to entries in include prototype files.
The above commands can have variable substitutions embedded within them, as demonstrated in the two example prototype files below.
Before files are overwritten during installation,
they are copied to a temporary pathname.
The exception to this rule is files whose mode includes execute permission,
unless the file is editable (that is, ftype is e).
For files which meet this exception,
the existing version is linked to a temporary pathname, and the original
file is removed.
This allows processes which are executing during installation
to be overwritten.
!PROJDIR=/usr/proj !BIN=$PROJDIR/bin !CFG=$PROJDIR/cfg !LIB=$PROJDIR/lib !HDRS=$PROJDIR/hdrs !search /usr/myname/usr/bin /usr/myname/src /usr/myname/hdrs i pkginfo=/usr/myname/wrap/pkginfo i depend=/usr/myname/wrap/depend i version=/usr/myname/wrap/version d none /usr/wrap 0755 root bin d none /usr/wrap/bin 0755 root bin 0 NULL NULL ! search $BIN f none /usr/wrap/bin/INSTALL 0755 root bin f none /usr/wrap/bin/REMOVE 0755 root bin f none /usr/wrap/bin/addpkg 0755 root bin !default 755 root bin 0 NULL NULL f none /usr/wrap/bin/audit 0 audit,setplevel NULL f none /usr/wrap/bin/listpkg f none /usr/wrap/bin/pkgmk # The logfile starts as a zero length file, since the source # file has zero length. Later, the size of logfile grows. v none /usr/wrap/logfile=/usr/wrap/log/zero_length 0644 root bin # the following specifies a link (dest=src) l none /usr/wrap/src/addpkg=/usr/wrap/bin/rmpkg ! search $SRC !default 644 root other f src /usr/wrap/src/INSTALL.sh f src /usr/wrap/src/REMOVE.sh f src /usr/wrap/src/addpkg.c f src /usr/wrap/src/audit.c f src /usr/wrap/src/listpkg.c f src /usr/wrap/src/pkgmk.c d none /usr/wrap/data 0755 root bin d none /usr/wrap/save 0755 root bin d none /usr/wrap/spool 0755 root bin d none /usr/wrap/tmp 0755 root bin d src /usr/wrap/src 0755 root bin
Example 2:
# this prototype is generated by 'pkgproto' to refer # to all prototypes in my src directory !PROJDIR=/usr/dew/projx !include $PROJDIR/src/cmd/prototype !include $PROJDIR/src/cmd/audmerg/protofile !include $PROJDIR/src/lib/proto
f none /usr/dev/bin/command
and that file does not exist, it will be created if the directory /usr/dev/bin already exists or if the prototype also has an entry defining the directory:
d none /usr/dev/bin
An exclusive directory type (file) type x) specifies directories that are constrained to contain only files that appear in the software installation database (/usr/adm/install/contents). If there are other files in the directory, they will be removed by pkgchk -fx as described on the pkgchk(ADM) man page.
Variable specifications for the ``pathname'', ``owner'', and ``group'' fields are defined in the pkginfo file. For example, if ``owner'' is set to $OWNER in the pkgmap(F) file and OWNER is defined as root in the pkginfo file, $OWNER will get the value root when the file gets installed.