[ Bottom of Page | Previous Page | Next Page | Contents | Index | Library Home | Legal | Search ]

General Programming Concepts:
Writing and Debugging Programs

Packaging Software for Installation

This article provides information about preparing applications to be installed using the installp command.

This section describes the format and contents of the software product installation package that must be supplied by the product developer. It gives a description of the required and optional files that are part of a software installation or update package.

A software product installation package is a backup-format file containing the files of the software product, required installation control files, and optional installation customization files. The installp command is used to install and update software products.

An installation package contains one or more separately installable, logically-grouped units called file sets. Each file set in a package must belong to the same product.

A file set update or update package is a package containing modifications to an existing file set.

Throughout this article, the term standard system is used to refer to a system that is not configured as a diskless system.

This article contains the following main sections:

Note
If your online documentation is written in HTML, you should register your documentation with the Documentation Library Service during installation. Your documents will then appear in the Documentation Library GUI so that users can search, navigate, and read your online documents. The service can also be launched from within your application to provide a custom GUI for users to read your application's documents. For information on how to build your installation package to use this service, see Documentation Library Service.

Installation Procedure Requirements

Package Control Information Requirements

Package control information must:

Format of a Software Package

An installation or update package must be a single file in backup format that can be restored by the installp command during installation. This file can be distributed on tape, diskette, or CD-ROM. See Format of Distribution Media for information about the format used for product packages on each type of media.

Package Partitioning Requirements

In order to support diskless or dataless client workstations, machine-specific portions of the package (the root part) must be separated from the machine-shareable portions of the package (the usr part). The usr part of the package contains files that reside in the /usr file system.

Installation of the root part of the package must not modify any files in the /usr file system. The /usr file system is not writable during installation of the root part of a diskless or dataless client system.

Software Vital Product Data (SWVPD)

Information about a software product and its installable options is maintained in the Software Vital Product Data (SWVPD) database. The SWVPD consists of a set of commands and the Object Data Manager (ODM) object classes for the maintenance of software product information. The SWVPD commands are provided for the user to query (lslpp) and verify (lppchk) installed software products. The ODM object classes define the scope and format of the software product information that is maintained.

The installp command uses the Object Data Manager to maintain the following information in the SWVPD database:

Software Product Packaging Parts

In order to support installation in the client/server environment, the installation packaging is divided in the following parts:

usr Contains the part of the product that can be shared among several machines with compatible hardware architectures. For a standard system, these files are stored in the /usr or /opt file tree.
root Contains the part of the product that cannot be shared among machines. Each client must have its own copy. Most of this software requiring a separate copy for each machine is associated with the configuration of the machine or product. For a standard system, files in the root part are stored in the root (/) file tree. The root part of a file set must be in the same package as the usr part of the file set. If a file set contains a root part, it must also contain a usr part.
share Contains the part of the product that can be shared among several machines, even if the machines have a different hardware architecture. The share part of the product can include non-executable files, such as documentation and data files. For a standard system, files are stored in the /usr/share file tree. A share part file set package must be separately packaged from usr and root parts, and the file set name cannot be the same as a file set which has usr or root parts.

Sample File System Guide for Package Partitioning

Following is a brief description of file systems and directories. You can use this as a guide for splitting a product package into root, usr, and share parts.

Some root-part directories and their contents:

/dev Local machine device files
/etc Machine configuration files such as hosts and passwd
/sbin System utilities needed to boot the system
/var System-specific data files and log files

Some usr-part directories and their contents include:

/usr/bin Commands and scripts (ordinary executables)
/usr/sbin System administration commands
/usr/include Include files
/usr/lib Libraries, non-user commands, and architecture-dependent data

Some share-part directories and their contents include:

/usr/share/dict Dictionary files
/usr/share/man Manual pages

Package and File Set Naming Conventions

Use the following conventions when naming a software package and its file sets:

File Set Extension Naming Conventions

The following list provides some file set extension naming conventions:

Extension File Set Description
.adt Application development toolkit
.com Common code required by similar file sets
.compat Compatibility code that may be removed in a future release
.data Share portion of a package
.diag Diagnostics support
.fnt Fonts
.help. Language Common Desktop Environment (CDE) help files for a particular language
.loc Locale
.mp Multiprocessor-specific code
.msg. Language Message files for a particular language
.rte Run-time environment or minimum set for a product
.ucode Microcode
.up Uniprocessor-specific code

Special Naming Considerations for Device Driver Packaging

The configuration manager command (cfgmgr) automatically installs software support for detectable devices that are available on the installation media and packaged with the following naming convention:

devices.BusTypeID.CardID

where:

For example, a token-ring device attaches to the Micro Channel and is identified by the configuration manager as having a unique card identifier of 8fc8. The package of file sets associated with this token-ring device is named devices.mca.8fc8. A microcode file set within this package is named devices.mca.8fc8.ucode.

Special Naming Considerations for Message Catalog Packaging

A user installing a package can request the message catalogs be installed automatically. When this request is made, the system automatically installs message file sets for the primary language if the message file sets are available on the installation media and packaged with the following naming convention:

Product.msg.Language.SubProduct

The optional .SubProduct suffix is used when a product has multiple message catalog file sets for the same language, each message catalog file set applying to a different SubProduct. You can choose to have one message file set for an entire product.

For example, the Super.Widget product has a plastic and a metal set of file set options. All Super.Widget English U.S. message catalogs can be packaged in a single file set named Super.Widget.msg.en_US. If separate message catalog file sets are needed for the plastic and metal options, the English U.S. message catalog file sets would be named Super.Widget.msg.en_US.plastic and Super.Widget.msg.en_US.metal.

Note
A message file set that conforms to this naming convention must contain an installed-requisite (instreq) on another file set in the product in order to avoid accidental automatic installation of the message file set.

File Names

Files delivered with the software package cannot have names containing commas or colons. Commas and colons are used as delimiters in the control files used during the software installation process. File names can contain non-ASCII characters.

File Set Revision Level Identification

The file set level is referred to as the level or alternatively as the v.r.m.f or VRMF and has the form:

Version.Release.ModificationLevel.FixLevel

where:

A base file set installation level is the full initial installation level of a file set. This level contains all files in the file set, as opposed to a file set update, which may contain a subset of files from the full file set.

All file sets in a software package should have the same file set level, though it is not required for AIX 4.1-formatted packages.

For all new levels of a file set, the file set level must increase. The installp command uses the file set level to check for a later level of the product on subsequent installations.

File set level precedence reads from left to right (for example, 5.2.0.0 is a newer level than 4.3.0.0).

Contents of a Software Package

This section describes the files contained in an installation or update package. File path names are given for installation package types. For update packages, wherever PackageName is part of the path name, it is replaced by PackageName/FilesetName/FilesetLevel.

The usr part of an installation or update package contains the following installation control files:

If the installation or update package contains a root part, the root part contains the following files:

If the software product has a share part, it must be packaged in a separate installation package from the usr and root parts. The backup format file that makes up an installation or update package for the share part of a software product must contain the following files:

Example Contents of a Software Package

The farm.apps package contains the farm.apps.hog 4.1.0.0 file set. The farm.apps.hog 4.1.0.0 file set delivers the following files:

/usr/bin/raisehog (in the usr part of the package)
/usr/sbin/sellhog
 (in the usr part of the package)

/etc/hog
 (in the root part of the package)

The farm.apps package contains at least the following files:

./lpp_name
./usr/lpp/farm.apps/liblpp.a
./usr/lpp/farm.apps/inst_root/liblpp.a
./usr/bin/raisehog
./usr/sbin/sellhog
./usr/lpp/farm.apps/inst_root/etc/hog

File set update farm.apps.hog 4.1.0.3 delivers updates to the following files:

/usr/sbin/sellhog
/etc/hog

The file set update package contains the following files:

./lpp_name
./usr/lpp/farm.apps/farm.apps.hog/4.1.0.3/liblpp.a
./usr/lpp/farm.apps/farm.apps.hog/4.1.0.3/inst_root/liblpp.a
./usr/sbin/sellhog
./usr/lpp/farm.apps/farm.apps.hog/4.1.0.3/inst_root/etc/hog
Note
The file from the root part of the package was restored under an inst_root directory. Files installed for the machine-dependent root part of a package are restored relative to an inst_root directory. This facilitates installation of machine-specific files in the root file systems of multiple systems. The root part files are installed into the root portions of systems by copying the files from the inst_root directory. This allows multiple machines to share a common machine-independent usr part.

The lpp_name Package Information File

Each software package must contain the lpp_name package information file. The lpp_name file gives the installp command information about the package and each file set in the package. Refer to the figure for an example lpp_name file for a file set update package. The numbers and arrows in the figure refer to fields that are described in the table that follows.

 

The following table defines the fields in the lpp_name file.

Field Name Format Separator Description
1. Format Integer White space Indicates the release level of installp for which this package was built. The values are:
  • 1 - AIX 3.1
  • 3 - AIX 3.2
  • 4 - AIX 4.1
2. Platform Character White space Indicates the platform for which this package was built. The values are:
  • R - RISC
  • I - Intel
  • N - Neutral
3. Package Type Character White space Indicates whether this is an installation or update package and what type. The values are:
  • I - Installation
  • S - Single update
  • SR - Single update required
  • ML - Maintenance level update
4. Package Name Character White space The name of the software package (PackageName).

{ New line Indicates the beginning of the repeatable sections of file set-specific data.
5.File set name Character White space The complete name of the file set. This field begins the heading information for the file set or file set update.
6. Level Shown in Description column White space The level of the file set to be installed. The format is: Version.Release.ModificationLevel.FixLevel
7. Diskette Volume Integer White space Indicates the diskette volume number where the file set is located, if shipped on diskette.
8. Bosboot Character White space Indicates whether a bosboot is needed following the installation. The values are:
  • N - Do not invoke bosboot
  • b - Invoke bosboot
9. Content Character White space Indicates the parts included in the file set or file set update. The values are:
  • B -usr and root part
  • H -share part
  • U -usr part only
10. Language Character White space Not used.
11. Description Character # or new line File set description.
12. Comments Character New line (Optional) Additional comments.

[ New line Indicates the beginning of the body of the file set information.
13. Requisite information Described following table New line (Optional) Installation dependencies the file set has on other file sets and file set updates. See the section following this table for detailed description.

% New line Indicates the separation between requisite and size information.
14. Size and License Agreement information Described later in this chapter New line Size requirements by directory and license agreement information. See Size and License Agreement Information Section later in this article for detailed description.

% New line Indicates the separation between size and supersede information.

% New line Indicates the separation between supersede and licensing information.
15. Fix information Described later in article New line Information regarding the fixes contained in the file set update. See Fix Information Section later in this article for detailed description.

] New line Indicates the end of the body of the file set information.

} New line Indicates the end of the repeatable sections of file set-specific information.

      1 2 3    4
      | | |    |          6      7 89 10     11        12  
      4 R  S  farm.apps { |      | ||  |     |          |
5 --> farm.apps.hog  04.01.0000.0003 1 N U en_US Hog Utilities # ...
[
13--> *ifreq bos.farming.rte (4.2.0.0) 4.2.0.15
%
14--> /usr/sbin 48
14--> /usr/lpp/farm.apps/farm.apps.hog/4.1.0.3 280
14--> /usr/lpp/farm.apps/farm.apps.hog/inst_root/4.1.0.3.96
14--> /usr/lpp/SAVESPACE 48
14--> /lpp/SAVESPACE 32
14--> /usr/lpp/bos.hos/farm.apps.hog/inst_root/4.1.0.3/ etc 32
%
%
%
15--> IX51366 Hogs producing eggs.
15--> IX81360 Piglets have too many ears.
]
}

Requisite Information Section

The requisite information section contains information about installation dependencies on other file sets or file set updates. Each requisite listed in the requisite section must be satisfied according to the requisite rules in order to apply the file set or file set update.

Before any installing or updating occurs, the installp command compares the current state of the file sets to be installed with the requirements listed in the lpp_name file. If the -g flag was specified with the installp command, any missing requisites are added to the list of file sets to be installed. The file sets are ordered for installation according to any prerequisites. Immediately before a file set is installed, the installp command again checks requisites for that file set. This check verifies that all requisites installed earlier in the installation process were installed successfully and that all requisites are satisfied.

In the following descriptions of the different types of requisites, RequiredFilesetLevel represents the minimum file set level that satisfies the requirements. Except when explicitly blocked by mechanisms described in Supersede Information Section, newer levels of a file set satisfy requisites on an earlier level. For example, a requisite on the plum.tree 2.2.0.0 file set is satisfied by the plum.tree 3.1.0.0 file set.

Prerequisite

A prerequisite indicates that the specified file set must be installed at the specified file set level or at a higher level for the current file set to install successfully. If a prerequisite file set is scheduled to be installed, the installp command orders the list of file sets to install to make sure the prerequisite is met.

Syntax

*prereq Fileset RequiredFilesetLevel

Alternate Syntax

Fileset RequiredFilesetLevel

A file set update contains an implicit prerequisite to its base-level file set. If this implicit prerequisite is not adequate, you must specify explicitly a different prerequisite. The Version and Release of the update and the implicit prerequisite are the same. If the FixLevel of the update is 0, the ModificationLevel and the FixLevel of the implicit prerequisite are both 0. Otherwise, the implicit prerequisite has a ModificationLevel that is the same as the ModificationLevel of the update and a FixLevel of 0. For example, a 4.1.3.2 level update requires its 4.1.3.0 level to be installed before the update installation. A 4.1.3.0 level update requires its 4.1.0.0 level to be installed before the update installation.

Corequisite

A corequisite indicates that the specified file set must be installed for the current file set to function successfully. At the end of the installation process, the installp command issues warning messages for any unmet corequisites. A corequisite is most commonly used for a file set within the same package. A prerequisite on a file set within the same package is not guaranteed.

Syntax

*coreq Fileset RequiredFilesetLevel

If Requisite

An if requisite indicates that the specified file set is required to be at RequiredFilesetLevel only if the file set is installed at InstalledFilesetLevel. This is most commonly used to coordinate dependencies between file set updates. The following example shows an if requisite:

*ifreq A.obj (1.1.0.0) 1.1.2.3

Syntax

*ifreq Fileset [(InstalledFilesetLevel)] RequiredFilesetLevel

If the A.obj file set is not already installed, this example does not cause it to be installed. If the A.obj file set is already installed at any of the following levels, this example does not cause the 1.1.2.3 level to be installed:

1.1.2.3 This level matches the RequiredFilesetLevel.
1.2.0.0 This level is a different base file set level.
1.1.3.0 This level supersedes the RequiredFilesetLevel.

If the A.obj file set is already installed at any of the following levels, this example causes the 1.1.2.3 level to be installed:

1.1.0.0 This level matches the InstalledFilesetLevel.
1.1.2.0 This level is the same base level as the InstalledFilesetLevel and a lower level than the RequiredFilesetLevel.

The (InstalledFilesetLevel) parameter is optional. If it is omitted, the Version and Release of the InstalledFilesetLevel and the RequiredFilesetLevel are assumed to be the same. If the FixLevel of the RequiredFilesetLevel is 0, the ModificationLevel and the FixLevel of the InstalledFilesetLevel are both 0. Otherwise, the InstalledFilesetLevel has a ModificationLevel that is the same as the ModificationLevel of the RequiredFilesetLevel and a FixLevel of 0. For example, if the RequiredFilesetLevel is 4.1.1.1 and no InstalledFilesetLevel parameter is supplied, the InstalledFilesetLevel is 4.1.1.0. If the RequiredFilesetLevel is 4.1.1.0 and no InstalledFilesetLevel parameter is supplied, the InstalledFilesetLevel is 4.1.0.0.

Installed Requisite

An installed requisite indicates that the specified file set should be installed automatically only if its corresponding file set is already installed or is on the list of file sets to install. An installed requisite also is installed if the user explicitly requests that it be installed. A file set update can not have an installed requisite. Because a file set containing the message files for a particular package should not be installed automatically without some other part of the package being installed, a message file set should contain an installed requisite for another file set in its package.

Syntax

*instreq Fileset RequiredFilesetLevel

Group Requisite

A group requisite indicates that different requisite conditions can satisfy the requisite. A group requisite can contain prerequisites, co-requisites, if-requisites, and nested group requisites. The Number preceding the { RequisiteExpressionList } identifies how many of the items in the RequisiteExpressionList are required. For example, >2 states that at least three items in the RequisiteExpressionList are required.

Syntax

>Number { RequisiteExpressionList }

Requisite Information Section Examples

  1. The following example illustrates the use of corequisites. The book.create 12.30.0.0 file set cannot function without the layout.text 1.1.0.0 and index.generate 2.3.0.0 file sets installed, so the requisite section for book.create 12.30.0.0 contains:

    *coreq layout.text 1.1.0.0
    *coreq index.generate 2.3.0.0

    The index.generate 3.1.0.0 file set satisfies the index.generate requisite, because 3.1.0.0 is a newer level than the required 2.3.0.0 level.

  2. The following example illustrates the use of the more common requisite types. File set new.fileset.rte 1.1.0.0 contains the following requisites:
    *prereq database 1.2.0.0
    *coreq spreadsheet 1.3.1.0
    *ifreq wordprocessorA (4.1.0.0) 4.1.1.1
    *ifreq wordprocessorB 4.1.1.1

    The database file set must be installed at level 1.2.0.0 or higher before the new.fileset.rte file set can be installed. If database and new.fileset.rte are installed in the same installation session, the installation program will install the database file set before the new.fileset.rte file set.

    The spreadsheet file set must be installed at level 1.3.1.0 or higher for the new.fileset.rte file set to function properly. The spreadsheet file set does not need to be installed before the new.fileset.rte file set is installed, provided both are installed in the same installation session. If an adequate level of the spreadsheet file set is not installed by the end of the installation session, a warning message will be issued stating that the co-requisite is not met.

    If the wordprocessorA file set is installed (or being installed with new.fileset.rte) at level 4.1.0.0, then the wordprocessorA file set update must be installed at level 4.1.1.1 or higher.

    If the wordprocessorB file set is installed (or being installed with new.fileset.rte) at level 4.1.1.0, then the wordprocessorB file set update must be installed at level 4.1.1.1 or higher.

  3. The following example illustrates an installed requisite. File set Super.msg.fr_FR.Widget at level 2.1.0.0 contains the following install requisite:
    Super.Widget 2.1.0.0

    The Super.msg.fr_FR.Widget file set can not be installed automatically when the Super.Widget file set is not installed. The Super.msg.fr_FR.Widget file set can be installed explicitly when the Super.Widget file set is not installed.

  4. The following example illustrates a group requisite. At least one of the prerequisite file sets listed must be installed (both can be installed). If installed, the spreadsheet_1 file set must be at least at level 1.2.0.0 and the spreadsheet_2 file set must be at least at level 1.3.0.0.
    >0 {
    *prereq spreadsheet_1 1.2.0.0
    *prereq spreadsheet_2 1.3.0.0
    }

Size and License Agreement Information Section

The size and license agreement information section contains information about the disk space and license agreement requirements for the file set.

Size Information

This information is used by the installation process to ensure that enough disk space is available for the installation or update to succeed. Size information has the form:Directory PermanentSpace [TemporarySpace]

Additionally, the product developer can specify PAGESPACE or INSTWORK in the full-path name field to indicate disk space requirements for paging space and work space needed in the package directory during the installation process.

Directory The full path name of the directory that has size requirements.
PermanentSpace The size (in 512-byte blocks) of the permanent space needed for the installation or update. Permanent space is space that is needed after the installation completes. This field has a different meaning in the following cases:

If Directory is PAGESPACE, PermanentSpace represents the size of page space needed (in 512-byte blocks) to perform the installation.

If Directory is INSTWORK, PermanentSpace represents the number of 512-byte blocks needed for extracting control files used during the installation. These control files are the files that are archived to the liblpp.a file.

TemporarySpace The size (in 512-byte blocks) of the temporary space needed for the installation only. Temporary space is released after the installation completes. The TemporarySpace value is optional. An example of temporary space is the space needed to relink an executable object file. Another example is the space needed to archive an object file into a library. To archive into a library, the installp command makes a copy of the library, archives the object file into the copied library, and moves the copied library over the original library. The space for the copy of the library is considered temporary space.

When Directory is INSTWORK, TemporarySpace represents the number of 512-byte blocks needed for the unextracted liblpp.a file.

The following example shows a size information section:

/usr/bin        30
/lib            40 20
PAGESPACE       10
INSTWORK        10  6

Because it is difficult to predict how disk file systems are mounted in the file tree, the directory path name entries in the size information section should be as specific as possible. For example, it is better to have an entry for /usr/bin and one for /usr/lib than to have a combined entry for /usr, because /usr/bin and /usr/lib can exist on different file systems that are both mounted under /usr. In general, it is best to include entries for each directory into which files are installed.

For an update package only, the size information must include any old files (to be replaced) that will move into the save directories. These old files will be restored if the update is later rejected. In order to indicate these size requirements, an update package must specify the following special directories:

/usr/lpp/SAVESPACE The save directory for usr part files. By default, the usr part files are saved in the /usr/lpp/PackageName/FilesetName/FilesetLevel.save directory.
/lpp/SAVESPACE The save directory for root part files. By default, the root part files are saved in the /lpp/PackageName/FilesetName/FilesetLevel.save directory.
/usr/share/lpp/SAVESPACE The save directory for share part files. By default, the share part files are saved in the /usr/share/lpp/PackageName/inst_FixID.save directory.

License Agreement Information

Products which require users to agree to software license terms before the product can be installed must provide special entries in the size and license agreement information section. There are two forms of license agreement information: license agreement requirement entries indicating that a file set is governed by a license agreement and license agreement file entries indicating that a package contains a license agreement file.

License agreement files are indicated by a size section entry which begins with LAF%locale_spec/, where LAF stands for License Agreement File, and locale_spec specifies the locale for which the file is encoded. If the locale_spec is not specified, then the agreement file will be assumed to be nontranslated and encoded as ASCII. If the license agreement file is translated, the locale name must be part of the path so that the requirement entry may be associated with the file. The remainder of the string is a path designation which uniquely identifies a particular license file which is included in the package. Each time that the license text changes, the fullpath of the license must also change. Licenses are not modifiable once they have been delivered, since the terms associated with preexisting products cannot be modified. Only one file set in the package is required to carry the license agreement file information, though it may appear in the size and license information section of more than one. It is desirable to only carry the license agreement file information for one file set since the information would otherwise be redundant.

Note
The license agreement file should be in neither the apply list nor the inventory for a file set in order to prevent the removal of the license agreement when the file set is removed. If there are unique directories required for the license files, those must be included in the apply list and inventory in order to properly control the permissions associated with the directories.

The second field in the license agreememt file indicator is the size in 512-byte blocks of the license agreement file, rounded up to multiples of 8 to reflect a 4096-byte block size for a standard JFS filesystem.

License agreement requirements are indicated by a size and license information section entry which begins with LAR/, where LAR stands for License Agreement Requirement. The remainder of the string is the filepath which uniquely identifies the particular license. The license agreement requirement entry will have an additional second field of 0 to indicate that no additional size requirements exist. The actual size information will be derived from the license agreement file size indication.

Internationalization

Each available translated license agreement file must be listed in the size and license information section of one of the file sets in the package. Translated license agreement files must include a locale designation as part of the full pathname.

License agreement requirement entries indicate the base pattern of the license files associated with license agreement file entries. A %L pattern will designate the locale substitution string which will be applied to identify which particular license agreement file to use.

In the following example, product IcedTea contains a license information file which has been translated into English, Japanese, and German. The file set IcedTea.rte both requires and provides a license agreement. The basic form of the license file provided for IcedTea is /usr/opt/IcedTea/license/LANG/license.txt. The size and license information section for IcedTea.rte would include the following entries:

LAF%en_US/usr/opt/IcedTea/license/en_US/license.txt 8
LAF%ja_JP/usr/opt/IcedTea/license/ja_JP/license.txt 8
LAF%de_DE/usr/opt/IcedTea/license/de_DE/license.txt 8
LAR/usr/opt/IcedTea/license/%L/license.txt 0

The following files would be included in the package containing IcedTea.rte:

./usr/opt/IcedTea/license/en_US/license.txt
./usr/opt/IcedTea/license/ja_JP/license.txt
./usr/opt/IcedTea/license/de_DE/license.txt

The license agreement files may be carried in separate packages from the packages containing the license agreement requirements. This enables shipping translations separately and also allows for a product consisting of multiple packages to only ship the license agreement files in a single package. It is preferable to limit the number of file sets in a product as much as possible. If there is a common file set which is a prerequisite for the other file sets in a product, the license agreement requirement should just be associated with that one file set.

Supersede Information Section

The supersede information section indicates the levels of a file set or file set update for which this file set or file set update may (or may not) be used as a replacement. Supersede information is optional and is only applicable to AIX 4.1-formatted file set base installation packages and AIX 3.2-formatted file set update packages.

A newer file set supersedes any older version of that file set unless the supersedes section of the lpp_name file identifies the latest level of that file set it supersedes. In the rare cases where a file set does not supersede all earlier levels of that file set, the installp command does not use the file set to satisfy requisites on levels older than the level of the file set listed in the supersedes section.

A file set update supersedes an older update for that file set only if it contains all of the files, configuration processing, and requisite information contained in the older file set update. The installp command determines that a file set update supersedes another update for that file set in the following conditions:

For example, the file set update farm.apps.hog 4.1.0.1 delivers an update of /usr/sbin/sellhog. File set update farm.apps.hog 4.1.0.3 delivers updates to the /usr/sbin/sellhog file and the /etc/hog file. File set update farm.apps.hog 4.1.1.2 delivers an update to the /usr/bin/raisehog file.

Update farm.apps.hog 4.1.0.3 supersedes farm.apps.hog 4.1.0.1 because it delivers the same files and applies to the same level, farm.apps.hog 4.1.0.0.

Update farm.apps.hog 4.1.1.2 does not supersede either farm.apps.hog 4.1.0.3 or farm.apps.hog 4.1.0.1 because it does not contain the same files and applies to a different level, farm.apps.hog 4.1.1.0. Update farm.apps.hog 4.1.1.0 supersedes farm.apps.hog 4.1.0.1 and farm.apps.hog 4.1.0.3.

Supersede Section for File Set Installation Levels (Base Levels)

An AIX 4.1-formatted file set installation package can contain the following supersede entries:

Barrier Entry Identifies the file set level where a major incompatibility was introduced. Such an incompatibility keeps the current file set from satisfying requisites to levels of the file set earlier than the specified level.
Compatibility Entry Indicates the file set can be used to satisfy the requisites of another file set. A compatibility entry is used when a file set has been renamed or made obsolete. Only one file set can supersede a given file set. You may specify only one compatibility entry for each file set.

The lpp_name file can contain at most one barrier and one compatibility entry for a file set.

A barrier entry consists of the file set name and the file set level when the incompatibility was introduced. A barrier entry is necessary for a file set only in the rare case that a level of the file set has introduced an incompatibility such that functionality required by dependent file sets has been modified or removed to such an extent that requisites on previous levels of the file set are not met. A barrier entry must exist in all subsequent versions of the file set indicating the latest level of the file set that satisfies requisites by dependent file sets.

For example, if a major incompatibility was introduced in file set Bad.Idea 6.5.6.0, the supersede information section for each Bad.Idea file set installation package from file set level 6.5.6.0 onward would contain a Bad.Idea 6.5.6.0 barrier entry. This barrier entry would prevent a requisite of Bad.Idea 6.5.4.0 from being satisfied by any levels of Bad.Idea greater than or equal to 6.5.6.0.

A compatibility entry consists of a file set name (different from the file set in the package) and a file set level. The file set level identifies the level at which requisites to the specified file set (and earlier levels of that file set) are met by the file set in the installation package. The compatibility is useful when the specified file set is obsolete or has been renamed, and the function from the specified file set is contained in the current file set. The file set level in the compatibility entry should be higher than any level expected to exist for the specified file set.

For example, the Year.Full 19.91.0.0 file set is no longer delivered as a unit and is instead broken into several smaller, individual file sets. Only one of the smaller resulting file sets, perhaps Winter 19.94.0.0, should contain a compatibility entry of Year.Full 19.94.0.0. This compatibility entry allows the Winter 19.94.0.0 file set to satisfy the requisites of file sets dependent on Year.Full at levels 19.94.0.0 and earlier.

Supersedes Processing

The installp command provides the following special features for installing file sets and file set updates which supersede other file sets or file set updates:

Fix Information Section

The fix information section is optional and is only applicable to update packages. The fix information section entries contain a fix keyword and a 60-character or less description of the problem fixed. A fix keyword is a 16-character or less identifier corresponding to the fix. Fix keywords beginning with ix and IX are reserved for use by the operating system manufacturer.

A maintenance level is a fix that is a major update level. Periodic preventive maintenance packages are maintenance levels. A maintenance level identifier begins with the name of the software product (not the package), followed by a single dot (.) and an identifying level, such as farm.4.1.1.0.

The liblpp.a Installation Control Library File

The liblpp.a file is an archive file that contains the files required to control the package installation. You can create a liblpp.a file for your package using the ar command. This section describes many of the files you can put in a liblpp.a archive.

Throughout this section, Fileset appears in the names of the control files. Fileset represents the name of the separate file set to be installed within the software package. For example, the apply list file is described as Fileset.al. The apply list file for the bos.net.tcp.client option of the bos.net software product is bos.net.tcp.client.al.

For any files you include in the liblpp.a archive file other than the files listed in this section, you should use the following naming conventions:

Many files described in this section are optional. An optional file is necessary only if the function the file provides is required for the file set or file set update. Unless stated, a file pertains to both full installation packages and file set update packages.

Data Files Contained in the liblpp.a File

Fileset.al Apply list. This file lists all files to be restored for this file set. Files are listed one per line with a path relative to root, as in ./usr/bin/pickle. An apply list file is required if any files are delivered with the file set or file set update.
Fileset.cfginfo Special instructions file. This file lists one keyword per line, each keyword indicating special characteristics of the file set or file set update. The only currently recognized keyword is BOOT, which causes a message to be generated after installation is complete indicating that the system needs to be restarted.
Fileset.cfgfiles List of user-configurable files and processing instructions for use when applying a newer or equal installation level of a file set that is already installed. Before restoring the files listed in the Fileset.al file, the system saves the files listed in Fileset.cfgfiles file. Later, these saved files are processed according to the handling methods specified in the Fileset.cfgfiles file.
Fileset.copyright Required copyright information file for the file set. This file consists of the full name of the software product followed by the copyright notices.
Fileset.err Error template file used as input to the errupdate command to add or delete entries in the Error Record Template Repository. This file is commonly used by device support software. The errupdate command creates a Fileset.undo.err file for cleanup purposes. See the errupdate command for information about the format of the Fileset.err file.
Fileset.fixdata Optional stanza format file. This file contains information about the fixes contained in a file set or file set update.
Fileset.inventory The inventory file. This file contains required software vital product data for the files in the file set or file set update. The inventory file is a stanza-format file containing an entry for each file to be installed or updated.
Fileset.namelist List of obsolete file sets and current file set (if applicable) that once contained files now existing in the file set to be installed. This file is used for installation of repackaged software products only.
Fileset.odmadd
Fileset.*.odmadd Stanzas to be added to ODM (Object Data Manager) databases.
Fileset.rm_inv Remove inventory file. This file is for installation of repackaged software products only and must exist if the file set is not a direct replacement for an obsolete file set. This stanza-format file contains names of files that need to be removed from obsolete file sets.
Fileset.size
Fileset.trc Trace report template file. The trcupdate command uses this file to add, replace, or delete trace report entries in the /etc/trcfmt file. The trcupdate command creates a Fileset.undo.trc file for cleanup purposes. Only the root part of a package can contain Fileset.trc files.
lpp.acf Archive control file for the entire package. This file is needed only when adding or replacing an archive member file to an archive file that already exists on the system. The archive control file consists of lines containing pairs of the member file in the temporary directory as listed in the Fileset.al file and the archive file that the member belongs to, both listed relative to root as in:

./usr/ccs/lib/libc/member.o ./usr/ccs/lib/libc.a
lpp.README Readme file. This file contains information the user should read before using the software. This file is optional and can also be named README, lpp.doc, lpp.instr, or lpp.lps.
productid Product identification file. This optional file consists of a single line indicating the product name, the product identifier (20-character limit), and the optional feature number (10-character limit).

Optional Executable Files Contained in the liblpp.a File

The product-specific executable files described in this section are called during the installation process. Unless otherwise noted, file names that end in _i are used during installation processing only, and file names that end in _u are used in file set update processing only. All files described in this section are optional and can be either shell scripts or executable object modules. Each program should have a return value of 0 (zero), unless the program is intended to cause the installation or update to fail.

Fileset.config
Fileset.config_u Modifies configuration near the end of the default installation or update process. Fileset.config is used during installation processing only.
Fileset.odmdel
Fileset.*.odmdel Updates ODM database information for the file set prior to adding new ODM entries for the file set. The odmdel file naming conventions enables a file set to have multiple odmdel files.
Fileset.pre_d Indicates whether a file set may be removed. The program must return a value of 0 (zero) if the file set may be removed. File sets are removable by default. The program should generate error messages indicating why the file set is not removable.
Fileset.pre_i
Fileset.pre_u Runs prior to restoring or saving the files from the apply list in the package, but after removing the files from a previously installed version of the file set.
Fileset.pre_rm Runs during a file set installation prior to removing the files from a previously installed version of the file set.
Fileset.post_i
Fileset.post_u Runs after restoring the files from the apply list of the file set installation or update.
Fileset.unconfig  
Fileset.unconfig_u Undoes configuration processing performed in the installation or update. Fileset.unconfig is used during installation processing only.
Fileset.unodmadd Deletes entries that were added to ODM databases during the installation or update.
Fileset.unpost_i_0
Fileset.unpost_u Undoes processing performed following restoring the files from the apply list in the installation or update.
Fileset.unpre_i
Fileset.unpre_u Undoes processing performed prior to restoring the files from the apply list in the installation or update.

If any of these executable files runs a command that may change the device configuration on a machine, that executable file should check the INUCLIENTS environment variable before running the command. If the INUCLIENTS environment variable is set, the command should not be run. The Network Installation Management (NIM) environment uses the installp command for many purposes, some of which require the installp command to bypass some of its normal processing. NIM sets the INUCLIENTS environment variable when this normal processing must be bypassed.

If the default installation processing is insufficient for your package, you can provide the following executable files in the liblpp.a file. If these files are provided in your package, the installp command uses your package-provided files in place of the system default files. Your package-provided files must contain the same functionality as the default files or unexpected results can occur. You can use the default files as models for creating your own files. Use of the default files in place of package-provided files is strongly recommended.

instal Used in place of the default installation script /usr/lib/instl/instal. The installp command calls this executable file if a file set in an installation package is applied.
lpp.cleanup Used in place of the default installation cleanup script /usr/lib/instl/cleanup. The installp command calls this executable file if a file set in an installation or update package has been partially applied and must be cleaned up to put the file set back into a consistent state.
lpp.deinstal Used in place of the default file set removal script /usr/lib/instl/deinstal. This executable file must be placed in the /usr/lpp/PackageName directory. The installp command calls this executable file if a file set in an installation package is removed.
lpp.reject Used in place of the default installation rejection script /usr/lib/instl/reject. The installp command calls this executable if a file set update in an update package is rejected. (The default /usr/lib/instl/reject script is a link to the /usr/lib/instl/cleanup script.)
update Used in place of the default file set update script /usr/lib/instl/update. The installp command calls this executable file if a file set in an update package is applied. (The default /usr/lib/instl/update script is a link to the /usr/lib/instl/instal script.)

To ensure compatibility with the installp command, the instal or update executable provided with a software package must:

Optional Executable File Contained in the Fileset.al File

Fileset.unconfig_d Undoes file set-specific configuration operations performed during the installation and updates of the file set. The Fileset.unconfig_d file is used when the -u flag is specified with the installp command. If this file is not provided and the -u flag is specified, the Fileset.unconfig, Fileset.unpost_i, and Fileset.unpre_i operations are performed.

Further Description of Installation Control Files

The Fileset.cfgfiles File

The Fileset.cfgfiles file lists configuration files that need to be saved in order to migrate to a new version of the file set without losing user-configured data. To preserve user-configuration data, a Fileset.cfgfiles file must be provided in the proper liblpp.a file ( usr, root, or share).

The Fileset.cfgfiles contains a one-line entry for each file to be saved. Each entry contains the file name (a path name relative to root), a white-space separator, and a keyword describing the handling method for the migration of the file. The handling method keywords are:

preserve Replaces the installed new version of the file with the saved version from the save directory. After replacing the new file with the saved version, the saved file from the configuration save directory is deleted.
user_merge Leaves the installed new version of the file on the system and keeps the old version of the file in the configuration save directory. The user will be able to reference the old version to perform any merge that may be necessary.
auto_merge During the Fileset.post_i processing, the product-provided executables merge necessary data from the installed new version of the file into the previous version of the file saved in the configuration save directory. After the Fileset.post_i processing, the installp command replaces the installed new version of the file with the merged version in the configuration save directory (if it exists) and then removes the saved file.
hold_new Replaces the installed new version of the file with the saved version from the save directory. The new version of the file is placed in the configuration save directory in place of the old version. The user will be able to reference the new version.
other Used in any case where none of the other defined handling methods are sufficient. The installp command saves the file in the configuration save directory and provides no further support. Any other manipulation and handling of the configuration file must be done by the product-provided executables. The product developer has the responsibility of documenting the handling of the file.

The Fileset.post_i executable can be used to do specific manipulating or merging of configuration data that cannot be done through the the default installation processing.

Configuration files listed in the Fileset.cfgfiles file are saved in the configuration save directory with the same relative path name given in the Fileset.cfgfiles file. The name of the configuration save directory is stored in the MIGSAVE environment variable. The save directory corresponds to the part of the package being installed. The following directories are the configuration save directories:

/usr/lpp/save.config For the usr part
/lpp/save.config For the root part
/usr/share/lpp/save.config For the share part

If the list of files that you need to save varies depending on the currently installed level of the file set, the Fileset.cfgfiles file must contain the entire list of configuration files that might be found. If necessary, the Fileset.post_i executable (or executables provided by other products) must handle the difference.

For example, you have a file set (foo.rte) that has one file that can be configured. So, in the root foo.rte.cfgfiles, there is one file listed:

/etc/foo_user   user_merge

When migrating from your old file set (foo.obj) to foo.rte, you cannot preserve this file because the format has changed. However, when migrating from an older level foo.rte to a newer level foo.rte, the file can be preserved. In this case, you might want to create a foo.rte.post_i script that checks to see what file set you are migrating from and acts appropriately. This way, if a user had made changes to the /etc/foo_user file, they are saved.

The root foo.bar.post_i script could be as follows:

#! /bin/ksh
grep -q foo.rte $INSTALLED_LIST
if [$? = 0]
then
  mv $MIGSAVE/etc/foo_user/ /etc/foo_user
fi

$INSTALLED_LIST is created and exported by installp. See Installation for Control Files Specifically for Repackaged Products (Installation Control Files Specifically for Repackaged Products) for more information about the Fileset.installed_list configuration file. The $MIGSAVE variable contains the name of the directory in which the root part configuration files are saved.

The installp command does not produce a warning or error message if a file listed in the Fileset.cfgfiles file is not found. The installp command also does not produce a message for a file that is not found during the phase following Fileset.post_i processing when saved configuration files are processed according to their handling methods. If any warning or error messages are desired, the product-provided executables must generate the messages.

As an example of the Fileset.cfgfiles file, the Product_X.option1 file set must recover user configuration data from three configuration files located in the root part of the file set. The Product_X.option1.cfgfiles is included in the root part of the liblpp.a file and contains the following:

./etc/cfg_leaf    preserve
./etc/cfg_pudding user_merge
./etc/cfg_newton  preserve

The Fileset.fixdata File

Fileset.fixdata A stanza-format file that describes the fixes contained in the file set update (or in a file set installation, if used in place of an update)

The information in this file is added to a fix database. The instfix command uses this database to identify fixes installed on the system. If the Fileset.fixdata exists in a package, the fix information in the fix database is updated when the package is applied.

Each fix in the file set should have its own stanza in the Fileset.fixdata file. A Fileset.fixdata stanza has the following format:

fix:
    name = FixKeyword
    abstract = Abstract
    type = {f | p}
    filesets = FilesetName FilesetLevel
    [FilesetName FilesetLevel ...]
    [symptom = [Symptom]]

FixKeyword can not exceed 16 characters. Abstract describes the fix and can not exceed 60 characters. In the type field, f represents a fix, and p represents a preventive maintenance update. The filesets field contains a new-line separated list of file sets and file set levels. FilesetLevel is the initial level in which the file set delivered all or part of the fix. Symptom is an optional description of the problem corrected by the fix. Symptom does not have a character limit.

The following example shows a Fileset.fixdata stanza for problem MS21235. The fix for this problem is contained in two file sets.

fix:
    name = MS21235
    abstract = 82 gigabyte diskette drive unusable on Mars
    type = f
    filesets = devices.mca.8d77.rte 12.3.6.13
            devices.mca.8efc.rte 12.1.0.2
    symptom = The 82 gigabyte subatomic diskettes fail to operate in a Martian environment.

The Fileset.inventory File

Fileset.inventory File that contains specific information about each file that is to be installed or updated for the file set
sysck Command that uses the Fileset.inventory file to enter the file name, product name, type, checksum, size, link, and symlink information into the software information database

The Fileset.inventory file is required for each part of a file set that installs or update files. If the package has a root part that does not contain files to be installed (it does configuration only), the root part does not require the Fileset.inventory file.

Note: The Fileset.inventory file does not support files which are greater than 2 GB in size. If you ship a file that is greater than 2 GB, include it in your fileset.al file, but not in your Fileset.inventory file. sysck has not been updated to handle files larger than 2GB, and the /usr file system on most machines will not be created with capability for files greater than 2GB (by default).

The inventory file consists of ASCII text in stanza format. The name of a stanza is the full path name of the file to be installed. The stanza name ends with a colon (:) and is followed by a new-line character. The file attributes follow the stanza name and have the format Attribute=Value. Each attribute is described on a separate line. The following list describes the valid attributes of a file:

class The logical group of the file. A value must be specified because it cannot be computed. The value is ClassName [ClassName].
type Specifies the file type. The type attribute can have the following values:
FILE
Ordinary file.
DIRECTORY
Directory.
SYMLINK
A symbolic link to a file.
FIFO
First-in-first-out file.
BLK_DEV
Block device special file.
CHAR_DEV
Character device special file.
MPX_DEV
Multiplexed device special file.
owner Specifies the file owner. The attribute value can be in the owner name or owner ID format.
group Specifies the file group. The attribute value can be in the group name or group ID format.
mode Specifies the file mode. The value must contain the permissions of the file in octal format. Any of the following keywords can precede the permissions value. Items in the list are separated by commas.
Mode Items
Meaning
tcb
Part of the Trusted Computing Base.
tp
Part of the Trusted Process.
svtx
Text will be saved on swap for this file.
suid
File has the set user ID bit set.
sgid
File has the set group ID bit set.
target Valid only for type=SYMLINK. The attribute value is the path name of the file to which the link points.
program Specifies the software product to use to verify the file. This attribute is not usually used.
source Specifies the location of the original copy of the file.
size Specifies the size of the file in blocks. If the file size is expected to change through normal operation, the value for this attribute must be VOLATILE.
checksum Specifies the checksum values of the file. The attribute value is a string containing the checksum value and number of 1024-byte blocks in the file as generated by the sum command. If the files size is expected to change through normal operation, the value for this attribute must be VOLATILE.
link Specifies any hard links. If multiple hard links exist, each link is separated by a comma.
Note
The sysck command creates hard links and symbolic links during installation if those links do not exist. The root part symbolic links should be packaged in the root part Fileset.inventory file.

Installation Control Files Specifically for Repackaged Products

The Fileset.installed_list File

Fileset.installed_list File created by the installp command when installing the file set from a package if it is found that the file set (or some form of it) is already installed on the system at some level

The software information database is searched to determine if either Fileset or any file sets listed in the file Fileset.namelist (if it exists) are already installed on the system. If so, the file set and the installation level are written to the Fileset.installed_list file.

If it is created, the Fileset.installed_list is available at the time of the calls to the rminstal and instal executables. The Fileset.installed_list file can be located in the following directories, the packaging working directories, or PackageWorkDirectory:

/usr/lpp/ PackageName for the usr part
/lpp/ PackageName for the root part
/usr/share/lpp/ PackageName for the share part

The Fileset.installed_list file contains a one-line entry for each file set that was installed. Each entry contains the file set name and the file set level.

For example, while the storm.rain 1.2.0.0 file set is being installed, the installp command discovers that storm.rain 1.1.0.0 is already installed. The installp command creates the PackageWorkDirectory/storm.rain.installed_list file with the following contents:

storm.rain 1.1.0.0

As another example, the Baytown.com file set contains a Baytown.com.namelist file with the following entries:

Pelly.obj
GooseCreek.rte
CedarBayou.stream 

While installing the Baytown.com 2.3.0.0 file set, the installp command finds that Pelly.obj 1.2.3.0 and CedarBayou.stream 4.1.3.2 are installed. The installp command creates thePackageWorkDirectory/Baytown.com.installed_list file with the following contents:

Pelly.obj 1.2.3.0
CedarBayou.stream 4.1.3.2

The Fileset.namelist File

Fileset.namelist This file is necessary when the file set name has changed or the file set contains files previously packaged in obsolete file sets. It contains names of all file sets that previously contained files currently included in the file set to be installed. Each file set name must appear on a separate line.

The Fileset.namelist file must be provided in the usr, root, or share part of the liblpp.a file. The Fileset.namelist file is only valid for installation packages; it is not valid for update packages.

At the beginning of installation, the installp command searches the Software Vital Product Data (SWVPD) to determine if the file set or any file set listed in the Fileset.namelist file is already installed on the system. The installp command writes to the Fileset.installed_list file the file set names and file set levels that are found installed, making this information available to product-provided executables.

As a simple example of a Fileset.namelist file, the small.business file set replaces an earlier file set named family.business. The small.business product package contains the small.business.namelist file in its usr part liblpp.a file. The small.business.namelist file contains the following entry:

family.business

As a more complex example of a Fileset.namelist file, a file set is divided into a client file set and a server file set. The LawPractice.client and LawPractice.server file sets replace the earlier lawoffice.mgr file set. The LawPractice.server file set also contains a few files from the obsolete BusinessOffice.mgr file set. The LawPractice.client.namelist file in the liblpp.a file for the LawPractice package contains the following entry:

lawoffice.mgr

The LawPractice.server.namelist file in the liblpp.a file for the LawPractice package contains the following entries:

lawoffice.mgr
BusinessOffice.mgr

If the Fileset.namelist file contains only one entry and the current file set is not a direct replacement for the file set listed in the Fileset.namelist file, you must include a Fileset.rm_inv file in the liblpp.a file. The installation process uses the Fileset.namelist file and the Fileset.rm_inv file to determine if a file set is a direct replacement for another file set. If the Fileset.namelist file contains only one entry and there is no Fileset.rm_inv file, the installation process assumes the new file set is a direct replacement for the old file set. When the new (replacement) file set is installed, the installation process removes from the system all files from the old (replaced) file set, even files not included in the new file set.

In the previous examples, the small.business file set is a direct replacement for the family.business file set, so a small.business.rm_inv file should not exist. The LawPractice.client file set is not a direct replacement for the lawoffice.mgr file set, so a LawPractice.client.rm_inv file must exist, even if it is empty.

Example 3:

File sets bagel.shop.rte and bread.shop.rte have been shipping seperately for years. Now, bagel.shop.rte is going to ship as a part of bread.shop.rte. For this to happen, the bread.shop.rte.namelist file would look like:

bread.shop.rte
bagel.shop.rte

You must also ship an empty bread.shop.rte.rm_inv file to indicate that all files from the bagel.shop.rte file set should be removed from the system.

The Fileset.rm_inv File

Fileset.rm_inv File that contains a list of files, links, and directories to be removed from the system if they are found installed

This file is used when the current file set is packaged differently from a previous level of the file set and the installation process should not remove previously installed files based on the file set's entries in the inventory database.

A simple name change for a file set is not sufficient to require a Fileset.rm_inv file. The Fileset.rm_inv file is necessary when a new file set is either a subset of a previous file set or a mixture of parts of previous file sets. If a Fileset.namelist file exists and contains entries for more than one file set, you must use the Fileset.rm_inv file to remove previously installed levels of the files from the system.

The Fileset.rm_inv file consists of ASCII text in stanza format. The name of a stanza is the full path name of the file or directory to be removed if found on the system. The stanza name ends with a colon (:) and is followed by a new-line character. If attributes follow the stanza name, the attributes have the format Attribute=Value. Attributes are used to identify hard links and symbolic links that need to be removed. Each attribute is described on a separate line. The following list describes the valid attributes:

links One or more hard links to the file. The full path names of the links are delimited by commas.
symlinks One or more symbolic links to the file. The full path names of the links are delimited by commas.

For example, the U.S.S.R 19.91.0.0 file set contains the following files in the /usr/lib directory: moscow, leningrad, kiev, odessa, and petrograd (a symbolic link to leningrad). The product developers decide to split the U.S.S.R 19.91.0.0 file set into two file sets: Ukraine.lib 19.94.0.0 and Russia.lib 19.94.0.0. The Ukraine.lib file set contains the kiev and odessa files. The Russia.lib file set contains the moscow file. The leningrad file no longer exists and is replaced by the st.petersburg file in the Russia.lib file set.

The Ukraine.lib.rm_inv file must exist because the Ukraine.lib file set is not a direct replacement for the U.S.S.R file set. The Ukraine.lib.rm_inv file should be empty because no files need to be removed when the Ukraine.lib file set is installed to clean up the migrating U.S.S.R file set.

The Russia.lib.rm_inv file must exist because the Russia.lib file set is not a direct replacement for the U.S.S.R file set. If the Russia.lib.rm_inv file is used to remove the leningrad file when the Russia.lib file set is installed, the Russia.lib.rm_inv file would contain the following stanza:

/usr/lib/leningrad:
     symlinks = /usr/lib/petrograd

Installation Files for Supplemental Disk Subsystems

A disk subsystem that will not configure with the provided SCSI or bus-attached device driver requires its own device driver and configuration methods. These installation files are provided on a supplemental diskette (which accompanies the device) and must be in backup format with a ./signature file and a ./startup file. The signature file must contain the string target. The startup file must use restore by name to extract the needed files from the supplemental diskette and to run the commands necessary to bring the device to the available state.

Format of Distribution Media

The following types of media can be used to distribute software product installation packages.

The following sections describe the formats that must be used to distribute multiple product packages on each of these media.

Tape

In order to stack multiple product package images onto either a single tape or a set of tapes, the files on each tape in the set must conform to the following format:

CD-ROM

A CD-ROM that is to contain multiple product package images must be compliant with the Rock Ridge Group Protocol. Product packages should be stored in the installation directory, which must contain the following:

A multiple volume CD-ROM is a CD-ROM that has an additional directory structure to define a set of CD-ROMs as a single installable unit.

A multiple volume CD-ROM must conform to the following rules:

AIX 5.2 Example:

File set A is in file A.bff on volume 1. File set B is in file B.bff on volume 2. The field in the table of contents file in /installp/mvCD containing the location of the product package images for A and B are vol%1/A.bff and vol%2.bff, respectively. The field in the table of contents file in /installp/ppc of volume 1 contains the location of A as A.bff. The field in the table of contents file in /installp/ppc of volume 2 contains the location of B as B.bff.

The CD-ROM directory stucture for AIX 5.1 and later allows for specification of other installers, as well as multiple platforms.

Diskette

In order to stack multiple product package images onto a set of diskettes, the following files must be written to the set of diskettes:

The files are written to the set of diskettes using the following rules:

The Table of Contents File

The following table describes the table of contents file. Note that some fields are different for the different types of media.

The Table of Contents File
Field Name Format Separator Description
1. Volume Character White space For the tape and diskette table of contents file, this is the number of the volume containing this data. For the fixed disk or CD-ROM table of contents file, the volume number is 0.
2. Date and time stamp mmddhhMMssyy White space For tape or diskette, this is the time stamp when volume 1 was created. For fixed disk or CD-ROM, this is the time stamp when the .toc file was created. See Date and Time Stamp Format later in this article for detailed description.
3. Header format Character New line A number indicating the format of the table of contents file. Valid entries are: 1 -AIX Version 3.1, 2 -Version 3.2, 3 -AIX Version 4.1, B -mksysb tape (invalid for use by installp)
4. Location of product package image Character White space For tape or diskette, this is a character string in the form: vvv:bbbbb:sssssssSee Location Format for Tape and Diskette later in this article for detailed description. For fixed disk or CD-ROM, this is the file name of the product package image file. Note that this is the file name only and must not be preceded by any part of the path name.
5. Package specific information lpp_name file format New line The contents of the lpp_name file contained in this product package image. See The lpp_name Package Information File for detailed description.
Note
Items 4 and 5 described in the preceding table are repeated for each product package image contained on the media.

Date and Time Stamp Format

A date and time stamp format is an ASCII string that has the following format:

MonthDayHourMinuteSecondYear

The Hour should be a value from 00 to 23. All date and time fields contain two digits. Thus, Month should be represented as 03 instead of 3, and Year should be represented as 94 instead of 1994.

Location Format for Tape and Diskette

The location has the format of vvv:bbbbb:sssssss where each letter represents a digit and has the following meaning:

For tape

vvv
is the volume number of the tape.
bbbbb
is the file number on the tape of the product package image.
ssssssss
is the size of the file in bytes.

For diskette

vvv
is the volume number of the diskette.
bbbbb
is the block number on diskette where the product package image file begins.
ssssssss
is the size of the file in bytes (including padding to the end of the block boundary).

The installp Processing of Product Packages

The major actions that can be taken with the installp command are:

Apply When a file set in a product installation package is applied, it is installed on the system and it overwrites any pre-existing version of that file set, therefore committing that version of the file set on the system. The file set may be removed if the user decides the file set is no longer required.

When a file set update is applied, the update is installed and information is saved (unless otherwise requested) so that the update can be removed later. File set updates that have been applied can be committed or rejected later.

Commit When a file set update is committed, the information saved during the apply is removed from the system. Committing already applied software does not change the currently active version of a file set.
Reject When an update is rejected, information saved during the apply is used to change the active version of the file set to the version previous to the rejected update. The saved information is then removed from the system. The reject operation is valid only for updates. Many of the same steps in the reject operation are performed in a cleanup operation when a file set or file set update fails to complete installation.
Remove When a file set is removed, the file set and its updates are removed from the system independent of their state (applied, committed, or broken). The remove operation is valid only for the installation level of a file set.

Executables provided within a product package can tailor processing for the apply, reject, and remove operations.

Reinstalling a file set does not perform the same actions that removing and installing the same file set do. The reinstall action (see /usr/lib/instl/rminstal) cleans up the current files from the previous or the same version, but does not run any of the unconfig or unpre* scripts. Therefore, do not assume that the unconfig script was run. The .config script should check the environment before assuming that the unconfig was completed.

For example, for the ras.berry.rte file set, the config script adds a line to root's crontab file. Reinstalling the ras.berry.rte file set results in two crontab entries, because the unconfig script was not run on reinstall (which removed the crontab entry). The config script should always remove the entry and then add it again.

Processing for the Apply Operation

This section describes the steps taken by the installp command when a file set or file set update is applied.

  1. Restore the lpp_name product package information file for the package from the specified device.
  2. Verify that the requested file sets exist on the installation medium.
  3. Check the level of the requested file sets to ensure that they may be installed on the system.
  4. Restore control files from the liblpp.a archive library file into the package directory (/usr/lpp/Package_Name for usr or usr/root packages and /usr/share/lpp/Package_Name for share packages. The control files specifically for the root portion of a usr/root package reside in /usr/lpp/Package_Name/inst_root/liblpp.a).
  5. Check disk space requirements.
  6. Check that necessary requisites (file sets required to be at certain levels to use or install another file set) are already installed or are on the list to be installed.
  7. If this is an instalation package rather than an update package, determine if there are license agreement requirements which must be satisfied in order to proceed with the installation.
  8. If this is an installation package rather than a file set update package, search the software vital product data (SWVPD) to see if Fileset (the file set being installed) or any file sets listed in the Fileset.namelist file are already installed on the system at any level. If Fileset is already installed, write the file set name and installed level to the Work_Directory/Fileset.installed_list file. If no level of Fileset is installed, then if any file sets listed in the Fileset.namelist file are installed, list all those file sets and levels in the Work_Directory/Fileset.installed_list file. Work_Directory is the same as the package directory with the exception of root parts, which use /lpp/Package_Name.
  9. If this is an installation package rather than a file set update package, run the /usr/lib/instl/rminstal script to do the following for each file set being installed.
    Note
    Unless otherwise specified, files checked for existence must have been restored from the liblpp.a control file library.
    1. If Fileset.pre_rm exists, run Fileset.pre_rm to perform required steps before removing any files from this version or an existing version of Fileset.
    2. If Work_Directory/Fileset.installed_list exists, move the existing files listed in Fileset cfgfiles to the configuration file save directory (indicated by the MIGSAVE environment variable).
    3. If a version of Fileset is already installed, remove the files and SWVPD information (except history) for Fileset.
    4. If Work_Directory/Fileset.installed_list exists, and Fileset.rm_inv exists or Fileset.namelist contains more than one file set or the only file set listed in Fileset.namelist is bos.obj, then do the following:
      1. Remove files and SWVPD inventory information for files listed in the file Fileset.rm_inv.
      2. Remove files and SWVPD inventory information for files listed in the file Fileset.inventory.
      3. Remove other SWVPD information for any file sets listed in Fileset.namelist which no longer have any SWVPD inventory information.
    5. If Work_Directory/Fileset.installed_list exists and contains only one file set and Fileset.namelist contained only one file set, Remove files and SWVPD information (except history) for that file set.
    6. For each part of a product package (usr part only, share part only, or usr followed by root)
      1. Set INUTREE (U for usr, M for root, and S for share) and INUTEMPDIR (name of created temporary working directory environment variables.
      2. If an instal control program exists in the package directory (not recommended), run ./instal, otherwise, run the default script /usr/lib/instl/instal. If an instal control program does not exist in the package directory, set INUSAVEDIR environment variable.
      3. If an update control program exists in the package directory (not recommended), run ./update. If an update control program does not exist in the package directory, run the default script /usr/lib/instl/update.
      4. If a status file has been successfully created by instal or update, Use status file to determine the success or failure of each file set. If a status file has not been created, assume all requested file sets in package failed to apply.
      5. If the apply operation for a file set was successful, update the Software Vital Product Data (SWVPD), then register any associated license agreement requirements. If the apply operation for a file set was not successful, run /usr/lib/instl/cleanup or the package-supplied lpp.cleanup from package directory to clean up the failed file sets.

Processing of the Default install or update Script

The instal or update executable is invoked from installp with the first parameter being the device being used for the installation or update. The second parameter is the full path name to the file containing the list of file sets to be installed or updated, referred to below as $FILESETLIST. The default instal and update scripts are linked together; processing varies based on whether it is invoked as instal or update. The current directory is the package directory. A temporary directory INUTEMPDIR is created in /tmp to hold working files. The referenced files are described in Further Description of Installation Control Files.

The flow within the default instal and update script is as follows:

  1. Do the following for each file set listed in the $FILESETLIST:
    1. If the file set is an update, Execute Fileset.pre_u (pre_update) if it exists. If the file set is not an update, execute Fileset.pre_i (pre_installation) if it exists.
    2. Build a master list of files to be restored from the package by appending Fileset.al to the new file INUTEMPDIR/master.al.
    3. If this is an update, the files are specified to be saved, and the lpp.acf archive control file exists,

      Save off the library archive members being updated.
    4. If the processing is successful, append this file set to the list to be installed in the $FILESETLIST.new file.
  2. If this is an update and file saving is specified, run inusave to save current versions of the files.
  3. If you are processing the root part, run inucp to copy files from the apply list to root part. If you are not processing root part, run inurest to restore files from apply list for the usr or share parts.
  4. Do the following for each file set listed in $FILESETLIST.new file:
    Note
    Failure in any step is recorded in the status file and processing for that file set ends
    1. Determine if this file set is installed at the same or older level, or if file sets listed in the Fileset.namelist are installed. If so, export the INSTALLED_LIST and MIGSAVE environment variables. This is called a migration.
    2. If you are processing an update, invoke Fileset.post_u if it exists. If Fileset.post_u does not exist, invoke Fileset.post_i if it exists.
    3. If Fileset.cfgfiles exists, run /usr/lib/instl/migrate_cfg to handle processing of configuration files according to their specified handling method.
    4. Invoke sysck to add the information in the Fileset.inventory file to the Software Vital Product Database (SWVPD).
    5. Invoke the tcbck command to add the trusted computing base information to the system if the Fileset.tcb file exists and the trusted computing base tcb_enabled attribute is set in the /usr/lib/objrepos/PdAt ODM database.
    6. Invoke errupdate to add error templates if Fileset.err exists.
    7. Invoke trcupdate to add trace report format templates if Fileset.trc exists.
    8. If update or if Work_Directory/Fileset.installed_list exists, invoke each Fileset.odmdel and Fileset.*.odmdel script to process ODM database deletion commands.
    9. Invoke odmadd on each existing Fileset.odmadd and Fileset.*.odmadd to add information to ODM databases.
    10. If this is an update, invoke Fileset.config_u (file set configuration update) if it exists. Otherwise, invoke Fileset.config (file set configuration) if it exists.
    11. Update the status file indicating successful processing for the file set.
  5. Link control files for needed for file set removal into the package's deinstl directory for future use. These files include the following files that might be present in the package directory:

Processing for the Reject and Cleanup Operations

This section describes the steps taken by the installp command when a file set update is rejected or when a file set or file set update fails to complete installation. The default cleanup and reject scripts located in /usr/lib/instl are linked together. Their logic differs slightly depending on whether the script was invoked as reject or cleanup. For usr/root file sets or file set updates, the root part is processed before the usr part.

  1. If rejecting, check requisites to ensure that all dependent product updates are also rejected.
  2. For each part of a package (i.e., usr, root, or share):
    1. Set INUTREE (U for usr, M for root, and S for share) and INUTEMPDIR environment variables.
    2. If reject control file exists in current directory (INULIBDIR), invoke ./lpp.reject. Otherwise, invoke the default script /usr/lib/instl/reject.
  3. Update the Software Vital Product Data.

The reject executable is invoked from installp with the first parameter being undefined and the second parameter being the full path name to the file containing the list of file sets (referred to below as $FILESETLIST) to be rejected for the update.

The following files are referenced by the default cleanup and reject script. They are described in detail in Further Description of Installation Control Files.

The flow within the default cleanup and reject script is as follows:

  1. Do the following for each file set listed in $FILESETLIST:
    1. If invoked as cleanup, then read the line in the Package_Name.s status file to determine which step the installation failed on and skip ahead to the undo action for that step. A cleanup operation will only begin at the step where the the installation failed. For example, if the installation of a file set failed in the Fileset.post_i script, then the cleanup operation for that file set would begin at 9, because there are no actions to undo from subsequent steps in the installation.
    2. Undo any configuration processing performed during the installation:

      If rejecting an update, invoke Fileset.unconfig_u if it exists. Otherwise, invoke Fileset.unconfig if it exists.

    3. Run any Fileset.*.unodmadd and/or Fileset.unodmadd files to remove Object Data Manager (ODM) entries added during the installation.
    4. Run any Fileset.*.rodmadd and/or Fileset.rodmadd exist to replace ODM entries deleted during the installation.
    5. Invoke trcupdate if Fileset.undo.trc exists to undo any trace format template changes made during the installation.
    6. Invoke errupdate if Fileset.undo.err exists to undo any error format template changes made during the installation.
    7. Invoke tcbck to delete the trusted computing base information to the system if the Fileset.tcb file exists and the trusted computing base attribute tcb_enabled is set in the /usr/lib/objrepos/PdAt ODM database.
    8. Invoke sysck if Fileset.inventory exists to undo changes to the software information database.
    9. Undo any post_installation processing performed during the installation:

      If this is an update, invoke Fileset.unpost_u if it exists. Otherwise, invoke Fileset.unpost_i if it exists.

    10. Build a master apply list (called master.al) from Fileset.al files.
    11. Add Fileset to $FILESETLIST.new.
  2. Do the following if $INUTEMPDIR/master.al exists.
    1. Change directories to / (root).
    2. Remove all files in master.al.
  3. Do the following while reading $FILESETLIST.new.
    1. Call inurecv to recover all saved files.
    2. If this is an update, invoke Fileset.unpre_u if it exists. Otherwise, invoke Fileset.unpre_i if it exists.
    3. Delete the install/update control files.
  4. Remove the Package_Name.s status file.

Processing for the Remove Operation

This section describes the steps taken by the installp command when a file set is removed. For usr/root file sets or file set updates, the root part is processed before the usr part.

  1. Check requisites to ensure that all dependent file sets are also removed.
  2. For each part of a product package (for example, usr, root, or share)
    1. Set INUTREE (U for usr, M for root, and S for share) and INUTEMPDIR (installp working directory generated in /tmp) environment variables.
    2. Change directory to INULIBDIR.
    3. If the deinstal control file exists in current directory, run the ./lpp.deinstalscript. If the deinstal control file does not exist in current directory, run the /usr/lib/instl/deinstal default script.
  3. Remove files belonging to the file set from the file system.
  4. Remove file set entries from the SWVPD except for history data.
  5. Deactivate license agreement requirement registration for the file set.

The deinstal executable is invoked from installp with the first parameter being the full path name to the file containing the list of file sets to be removed, referred to below as $FILESETLIST.

The flow within the default deinstal script is as follows:

  1. Do the following for each file set listed in input file $FILESETLIST:
  2. If Fileset.unconfig_d exists

    Execute Fileset.unconfig_d to remove all configuration changes, Object Data Manager (ODM) changes, and error and trace format changes, and to undo all operations performed in the post-installation and preinstallation scripts for all updates and the base level installation.

  3. If Fileset.unconfig_d does not exist,
    1. For each update for that file set, do the following:
      • Run all Fileset.unconfig_u scripts to undo any update configuration processing.
      • Run all Fileset.*.unodmadd and Fileset.unodmadd to delete Object Data Manager (ODM) entries added during the update.
      • Run all Fileset.*.rodmadd and Fileset.rodmadd to add Object Data Manager (ODM) entries deleted during the update.
      • Run errupdate if Fileset.undo.err exists to undo error log template changes.
      • Run trcupdate if Fileset.undo.trc exists to undo trace report template changes.
      • Run any Fileset.unpost_u to undo any post-installation customization.
    2. For the file set base installation level, do the following:
      • Run any Fileset.*.unodmadd and/or Fileset.unodmadd to delete Object Data Manager (ODM) entries added during the installation.
      • Run any Fileset.*.rodmadd and/or Fileset.rodmadd to add Object Data Manager (ODM) entries deleted during the installation.
      • Run errupdate if Fileset.undo.err exists to undo error log template changes.
      • Run trcupdate if Fileset.undo.trc exists to undo trace report template changes.
      • Run Fileset.unconfig_i to undo any installation configuration processing.
      • Run Fileset.unpost_i to undo any post-file installation customization.
  4. Remove the files and software data information installed with the file set.
  5. If Fileset.unconfig_d does not exist,
    1. For each update for that file set, run any Fileset.unpre_u to undo any pre-file installation customization.
    2. For the file set base installation level, run any Fileset.unpre_i to undo any pre-file installation customization.
  6. Delete any empty directories associated with the file set.
    Note
    If an error is returned from some call during the execution of the deinstal executable, the error will be logged, but execution will continue. This is different from the other scripts because execution for that file set is normally canceled once an error is encountered. However, once the removal of a file set has begun, there is no recovery; therefore, removal becomes a best effort once an error is found.

The Installation Status File

$INUTEMPDIR/status File that contains a one-line entry for each file set that was to be installed or updated

The installp command uses this status file to determine appropriate processing. If you create installation scripts, your scripts should produce a status file that has the correct format. Each line in the status file has the format:

StatusCode Fileset

The following list describes the valid StatusCode values:

Status Code Meaning
s Success, update SWVPD
f Failure, perform cleanup procedure
b Bypass, failed, cleanup not needed
i Requisite failure, cleanup not needed
v sysck verification failed

The following example of a status file indicates to the installp command that the installations for the tcp.client and tcp.server file sets of bos.net package were successful and the installation for the nfs.client file set was not successful.

s bos.net.tcp.client
s bos.net.tcp.server
f bos.net.nfs.client

Installation Commands Used During Installation and Update Processing

inucp Copies files from the /usr/lpp/Package_Name/inst_root directory to the / (root) file tree when installing the root part.
inulag Acts as the front end to the subroutines to manage license agreements.
inurecv Recovers saved files for installation failure or software rejection (installp -r).
inurest Restores files from the distribution medium onto the system using an apply list as input.
inusave Saves all files specified by an apply list into the save directory belonging to the software product.
inuumsg Issues messages from the inuumsg.cat message catalog file for the software product being installed.
ckprereq Verifies compatibility of the software product with any dependencies using requisite information supplied in the lpp_name file and information about already installed products found in the SWVPD.
sysck Checks the inventory information during installation and update procedures.

The sysck command is in the /usr/bin directory. Other commands listed previously are in the /usr/sbin directory.

For examples of their use, refer to the default installation script, /usr/lib/instl/instal.

[ Top of Page | Previous Page | Next Page | Contents | Index | Library Home | Legal | Search ]