The package table of contents file, .packagetoc, is an ASCII file containing all of the information necessary for installing a product release distributed in package form. It centralizes and summarizes all of the relevant information about each package in the product. This allows the install software to quickly read one file to obtain all of the relevant information about each package instead of having to examine each package at run time to obtain this information. The .packagetoc file resides in the top-level directory containing the product.
If a .packagetoc file exists for a product, there must also be a .order file.
Each entry in the .packagetoc file is a line that establishes the value of a parameter in the following form:
A line starting with a pound-sign, ``#'', is considered a comment and is ignored.
Parameters are grouped by package. The start of a package description is defined by a line of the form:
There is no order implied or assumed for specifying the parameters for a package with the exception of the PKG parameter, which must appear first. Only one occurrence of a parameter is permitted per package.
The parameters recognized are described below. Those marked with an asterisk are mandatory.
The package identifier, for example, SUNWaccu. The maximum length of the identifier is nine characters. All the characters must be alphanumeric. The first character must be alphabetic. install, new, and all are reserved identifiers.
The name of the directory containing the package. This directory is relative to the directory containing the product.
The full name of the package.
The name of the package's vendor.
The version of the package.
The name of the product to which this package belongs.
The version of the product to which this package belongs.
The package type. Valid values are:
indicates that the package will be installed in the / file system. The root packages are the only packages installed during dataless client installations. The root packages are spooled during a server installation to allow the later installation of diskless clients.
indicates that the package will be installed in the /usr file system.
indicates that the package will be installed in the /usr/platform file system.
indicates a package that is part of the bundled OpenWindows product release. If no SUNW_PKGTYPE macro is present, the package is assumed to be of type usr.
The architecture(s) supported by the package. This macro is taken from the package's pkginfo(4) file and is subject to the same length and formatting constraints.
The install program currently assumes that exactly one architecture token is specified for a package. For example, ARCH=sparc.sun4c is acceptable, but ARCH=sparc.sun4c, sparc.sun4m is not.
A detailed textual description of the package.
The default installation base directory of the package.
A dependency specification for a prerequisite package. Each prerequisite dependency must appear as a separate macro. See depend(4) for more information on dependencies and instance specifications.
A dependency specification for an incompatible package. Each incompatible dependency should appear as a separate macro. See depend(4) for more information on dependencies and instance specifications.
A dependency specification for a reversed package dependency. Each reverse dependency should appear as a separate macro. See depend(4) for more information on dependencies and instance specifications.
The category of the package.
Indicates that this package contains localizations for other packages. Such localization packages are treated as special case packages. Each package which has a SUNW_LOC macro must have a corresponding SUNW_PKGLIST macro. The value specified by this macro should be a valid locale.
A comma separated list of package identifiers. Currently this macro is used to indicate which packages are localized by a localization package.
The space used by the package in the / file system.
The space used by the package in the /usr subtree of the file system.
The space used by the package in the /var subtree of the file system.
The space used by the package in the /opt subtree of the file system.
The space used by the package in the /export subtree of the file system.
The space used by the package in the /usr/openwin subtree of the file system.
The space used by the spooled version of this package. This is used during the setup of a server by the initial system installation programs.
All sizes are specified in bytes. Default disk partitions and file system sizes are derived from the values provided: accuracy is important.
The following is an example package entry in a .packagetoc file.
#ident "@(#)packagetoc.4 1.2 92/04/28" PKG=SUNWaccr PKGDIR=SUNWaccr NAME=System Accounting, (Root) VENDOR=Sun Microsystems, Inc. VERSION=8.1 PRODNAME=SunOS PRODVERS=5.0beta2 SUNW_PKGTYPE=root ARCH=sparc DESC=System Accounting, (Root) BASEDIR=/ CATEGORY=system ROOTSIZE=11264 VARSIZE= 15360 OPTSIZE=0 EXPORTSIZE=0 USRSIZE=0 USROWNSIZE=0
The parameters NAME, VENDOR, VERSION, PRODNAME, PRODVERS, SUNW_PKGTYPE, SUNW_LOC, SUNW_PKGLIST, ARCH, DESC, BASEDIR, and CATEGORY are assumed to have been taken directly from the package's pkginfo(4) file. The length and formatting restrictions placed on the values for these parameters are identical to those for the corresponding entries in the pkginfo(4) file.
The value specified for the parameter PKGDIR should not exceed 255 characters.
The value specified for the parameters ROOTSIZE, VARSIZE, OPTSIZE, EXPORTSIZE, USRSIZE and USROWNSIZE must be a single integer value. The values can be derived from the package's pkgmap file by counting all space consumed by any files installed in the applicable file system. The space includes that used for directory entries and any UFS overhead that exists because of the way the files are represented (directory allocation scheme; direct, indirect, double indirect blocks; fragments; etc.)
The following kinds of entries in the pkgmap(4) file should be included in the space derivation:
character special file
block special file
packaging installation script or information file (copyright, depend, postinstall, postremove)