Jump to content United States-English
HP.com Home Products and Services Support and Drivers Solutions How to Buy
» Contact HP
More options
HP.com home
Software Distributor Administration Guide: HP-UX 11i v1, 11i v2, and 11i v3 > Chapter 11 Using Control Scripts

Execution of Control Scripts

» 

Technical documentation

Complete book in PDF
» Feedback
Content starts here

 » Table of Contents

 » Glossary

 » Index

This section details how each control script is executed.

Details Common to All Control Scripts

  • The agent runs as the superuser, therefore control scripts are always executed as the superuser. Use appropriate caution.

  • Control scripts are only executed for software being installed, removed or verified in the primary root (“/”) or an alternate root directory. Scripts are never executed for software in a depot.

  • Each script must set its own PATH variable, using SW_PATH.

  • Neither swinstall nor swremove require that the system be shut down. Control scripts must work correctly on both quiet single-user systems and active multi-user systems. They must deal properly with unremovable running programs. They might have to shut down or start up processes that they own themselves to succeed.

  • Control scripts can be re-executed. If a script is run more than once, it should produce the same results each time. The second execution should not produce any error messages or leave the system in a state different than before it was run.

    A script should be executable after its fileset was loaded without damaging the new fileset with which it is associated.

    For example, if you must copy a file from under /usr/newconfig to another location, use the cpio -p command to copy it rather than the cp command to move it, or check for the absence of the /usr/newconfig version before attempting the move. (The cpio(1) command may be preferred over cp(1) because cpio copies the mode, owner, and group permissions.)

  • Control scripts can exit with one of the following return values:

    • SUCCESS (0) - Exit with no errors or warnings.

    • ERROR (1) - Exit with serious errors.

    • WARNINGS (2) - Exit with warnings.

    • REBOOT (12) -Exits and indicates that a reboot of the system is required when a fileset is installed. This return value is only valid for checkinstall and checkremove scripts for a fileset that includes a dynamic_module attribute.

    All messages produced by control scripts are redirected to the agent logfile.

  • The set of control scripts executed during a particular phase of a task are always executed in prerequisite order the scripts of each prerequisite product/fileset are executed before the script of the dependent fileset.

  • All control scripts are readable by any other control script.

Checkinstall Scripts

  • Checkinstall scripts are executed during the Analysis phase of a swinstall session. The pathname of the script being executed is:

    $ {SW_CONTROL_DIRECTORY}checkinstall

  • A checkinstall script must not modify the system.

  • A checkinstall script determines whether the product/fileset can be installed by performing checks beyond those performed by swinstall. Example checks include checking to see if the product/fileset is actively in use, or checking that the system run-level is appropriate.

  • If you are using a request script as part of the install, the checkinstall script should:

    • Verify that the response file exists.

    • Prevent swinstall from “hanging” if:

      • A script tries to read a response file that does not exist, or

      • The install or configuration relies on information in the missing response file.

  • If the checkinstall script fails, the fileset will not be installed. The interactive interface of swinstall will notify you that the checkinstall script has failed. Then you can: diagnose the problem, fix it and re-execute the analysis phase; or unselect the product/fileset. The non-interactive interface tells you about each individual checkinstall failure and the filesets are not installed.

  • A checkinstall script is executed for installations into the primary root (“/”) or an alternate root. Since most of the actions of this script will involve checking the current conditions of a running system (that is, the primary root), it may not need to perform any actions when the product/fileset is being installed into an alternate root.

Preinstall Scripts

  • Preinstall scripts are executed during the Load phase of a swinstall session. The pathname of the script being executed is:

    $ {SW_CONTROL_DIRECTORY}preinstall

  • The preinstall script for a product is executed immediately before the fileset’s files are installed.

  • A preinstall script should perform specific tasks preparatory to the files being installed. The swinstall session will proceed with installing the files regardless of the return value from a preinstall script. Example actions include removing obsolete files (in an update scenario).

  • A preinstall script is executed for installations into the primary root (“/”) or an alternate root. The scope of actions of a preinstall script should be within the product itself (that is, the files within the product’s directory).

Postinstall Scripts

  • Postinstall scripts are executed during the Load phase of a swinstall session. The pathname of the script being executed is:

    $ {SW_CONTROL_DIRECTORY}postinstall

  • The postinstall script for a product is executed immediately after the fileset’s files are installed.

  • A postinstall script should perform specific tasks related to the files just installed. The swinstall session will proceed with the remainder of the session (for example, configuration) regardless of the return value from a postinstall script. Example actions include adding a kernel driver to the system file or moving a file from under /usr/newconfig to its correct place in the file system.

  • A postinstall script is executed for installations into the primary root (“/”) or an alternate root. The scope of actions of a postinstall script should be within the product itself (that is, the files within the product’s directory).

  • The customization or configuration tasks that must be performed to enable the product/fileset for general use should not be done in the postinstall script, but the configure script (described below).

Configure Scripts

  • Configure scripts are executed during the Configuration phase of a swinstall session. SD expects configure scripts at system start-up if the swinstall session triggers a system reboot. The swconfig command can also execute configure scripts. The pathname of the script being executed is:

    $ {SW_CONTROL_DIRECTORY}configure

  • A configure script is only executed for installations into the primary root (“/”). If you choose to defer configuration in the swinstall session, then the configure script will be executed by a swconfig session at some time after the installation completes.

  • A configure script is usually executed only when the product/fileset is in the installed state.

  • A configure script is the primary way to move a product/fileset from the installed state to the configured state. The script should perform all (or most of) the activities needed to enable the product/fileset for use.

  • A configure script can use configuration information provided by the user and collected by a request script.

  • When an existing version of a product is updated to a new version, the configure script(s) for the new version must perform any unconfigurations-configurations of the old version that are necessary to properly configure the new version. The unconfigure script(s) for the old version are not executed.

  • Configure scripts are for architecture-dependent actions because they will always be run on the architecture of the install target.

  • Configure scripts are the best place for removing files and updating the IPD, since the system is not in transition (i.e. as in an update).

  • A configure script can help with software updates as well as new installs. The script must also be able to handle reinstallation and should include appropriate error control if data destruction is possible.

Unconfigure Scripts

  • Unconfigure scripts are executed during the Unconfiguration-Configuration phase of a swremove session. They can also be executed by the swconfig command. The pathname of the script being executed is:

    $ {SW_CONTROL_DIRECTORY}unconfigure

  • An unconfigure script is executed only for software installed into the primary root (“/”).

  • An unconfigure script is re-executed even when the product/fileset is in the configured state.

  • An unconfigure script is the primary way to move a product/fileset from the configured state back to the installed state. The script should perform all (or most of) the activities needed to disable the product/fileset for use.

  • An unconfigure script must undo all configuration tasks performed by its companion configure script. The user should be able to configure, unconfigure, configure, etc. an installed product/fileset and always end up with the same configured result.

Verify Scripts

  • Verify scripts are executed by the swverify command. The pathname of the script being executed is:

    $ {SW_CONTROL_DIRECTORY}verify

  • A verify script must not modify the system.

  • A verify script is the primary way to check the configuration tasks performed by a configure script for correctness and completeness.

  • A verify script is executed for installations into the primary root (“/”) or an alternate root. Since most of the actions of this script will involve checking the current conditions of a configured product/fileset (in the primary root), it may not need to perform any actions for a product/fileset installed into an alternate root directory.

  • An environment variable, SW_IS_COMPATIBLE, can help a verify script determine if installed software is compatible with the system on which it is installed. See “SW_IS_COMPATIBLE”.

Fix Scripts

  • Fix scripts are executed by the swverify command. The pathname of the script being executed is:

    $ {SW_CONTROL_DIRECTORY}fix

  • A fix script can be used to correct attribute problems detected by a verify script.

  • A fix script can create missing directories, correct file modifications (mode, owner, group, major, and minor), and recreate symbolic links.

Checkremove Scripts

  • Checkremove scripts are executed during the Analysis phase of a swremove session. The pathname of the script being executed is:

    $ {SW_CONTROL_DIRECTORY}checkremove

  • A checkremove script must not modify the system.

  • A checkremove script determines whether the product/fileset can be removed by performing checks beyond those performed by swremove. Example checks include checking to see if the product/fileset is actively in use.

  • If the checkremove script fails, no filesets in the product will be removed. The GUI/TUI interface of swremove notifies you that the checkremove script has failed. You can then: diagnose the problem, fix it, and re-execute the analysis phase; unselect the target system(s) in question; or unselect the product/fileset. The command line interface notifies you for each individual checkremove failure, and no filesets in that product are removed.

  • A checkremove script is executed for installations into the primary root (“/”) or an alternate root. Since most of the actions of this script will involve checking the current conditions of a running system (that is, the primary root), it may not need to perform any actions when the product/fileset is being removed from an alternate root.

Preremove Scripts

  • Preremove scripts are executed during the Remove phase of a swremove session. The pathname of the script being executed is:

    $ {SW_CONTROL_DIRECTORY}preremove

  • All preremove scripts for a product are executed immediately before the product’s files are removed.

  • A preremove script should perform specific tasks preparatory to the files being removed. The swremove session will proceed with removing the files regardless of the return value from a preremove script. Example actions include removing files created in the postinstall script.

  • A preremove script is executed for installations into the primary root (“/”) or an alternate root. The scope of actions of a preremove script should be within the product itself (that is, the files within the product’s directory).

  • The de-customization or unconfiguration-configuration tasks which must be performed to disable the product/fileset for general use must not be done in a preremove script, instead they should be done in an unconfigure script (described above).

Postremove Scripts

  • Postremove scripts are executed during the remove phase of a swremove session. The pathname of the script being executed is:

    $ {SW_CONTROL_DIRECTORY}postremove

  • All postremove scripts for a product are executed immediately after the product’s fileset files are removed.

  • A postremove script should perform specific tasks related to the files just removed. The swremove session will proceed with the remainder of the session regardless of the return value from a postremove script. Example actions include:

    • Removing any files still remaining after preremove and the swremove file removal have completed.

    • Removal of directories wholly owned by the fileset and which have been emptied by the file removal.

  • A postremove script is executed for installations into the primary root (“/”) and an alternate root. The scope of actions of a postremove script should be within the product itself (that is, the files within the product’s directory).

  • The de-customization or unconfiguration-configuration tasks which must be performed to disable the product/fileset for general use should not be done in the postremove script, instead they should be done in the unconfigure script (described above).

Request Scripts

  • Request scripts are interactive scripts that request a response from the user as part of software installation or configuration. The pathname of the script being executed is:

    $ {SW_CONTROL_DIRECTORY}request

  • Request scripts write information into a response file for later use by the configure script or other scripts. You can run requests scripts by executing the swask command or using the ask option with swinstall or swconfig after selection and before the analysis phase.

  • The POSIX default for request scripts is a shell script. The shell script must be able to:

    • Ask questions of the user.

    • Read the user’s answer.

    • List all current user responses in a redrawn screen.

    • Ask the user to confirm an answer and continue or to go back.

  • The request script stores the user response in a response file. The path of the response file is accessible by the SW_CONTROL_DIRECTORY environment variable.

  • The POSIX recommendation for response file format is the SVR4 model of attribute/value pairs. Answers should be written to the response file inenv_var=value format so that the response files can be easily used by other control scripts.

  • When you use a request script to get install information, HP recommends that you use a checkinstall script to check for proper execution of the request script. The checkinstall script should:

    • Verify that the response file exists.

    • Prevent swinstall from “hanging” if:

      • A script tries to read a response file that does not exist.

      • The install or configuration relies on information in the missing response file.

Printable version
Privacy statement Using this site means you accept its terms Feedback to webmaster
© 1997, 2000-2003, 2006, 2007, 2008 Hewlett-Packard Development Company, L.P.