pkg_add.1 revision 382

FreeBSD install - a package for the installation and maintainance
of non-core utilities.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.

Jordan K. Hubbard


@(#)pkg_add.1

pkg_add 1 "July 18, 1993" "" "FreeBSD"
NAME
pkg_add - a utility for installing software package distributions.
SYNOPSIS
pkg_add [options] "pkg-name [.. pkg-name]"
DESCRIPTION
The pkg_add command is used to extract packages that have been previously created with the pkg_create command.
OPTIONS

The following command line options are supported.

-v Turns on verbose output. "Optional."

-I If an installation script exists for a given package, do not execute it. "Optional."

-n Don't actually install a package, just report the steps that would be taken if it was. "Optional."

-R Do not record the installation of a package. This means that you cannot deinstall it later, so only use this option if you know what you are doing! "Optional."

"-p " prefix Sets prefix as the directory in which to extract files from a package. If a package has set its default directory, it will be overridden by this flag. Note that only the first directory default will be replaced, since pkg_add has no way of knowing which directory settings are relative and which are absolute. It is rare, in any case, that more than one directory transition is made, but when such is the case then you may wish to look into the use of MASTER and SLAVE mode (see -M and -S options). "Optional."

"-t " template Use template as the input to mktemp(3). By default, this is the string /tmp/instmp.XXXXXX , but it may be necessary to override it in the situation where space in your /tmp directory is limited. Be sure to leave some number of `X' characters for mktemp(3) to fill in with a unique ID. "Optional."

-M Run in MASTER mode. This is a very specialized mode for running pkg_add and is meant to be run in conjunction with SLAVE mode. When run in this mode, pkg_add does no work beyond extracting the package into a temporary staging area (see -t option), reading in the packing list, and then dumping it (prefaced by the current staging area) to stdout where it may be filtered by a program such as sed(1). When used in conjunction with SLAVE mode, it allows you to make radical changes to the package structure before acting on its contents.

-S Run in SLAVE mode. This is a very specialized mode for running pkg_add and is meant to be run in conjunction with MASTER mode. When run in this mode, pkg_add expects the release contents to be already extracted and waiting in the staging area, the location of which is read as a string from stdin. The complete packing list is also read from stdin, and the contents then acted on as normal.

"TECHNICAL DETAILS"
pkg_add is fairly simple. It simply extracts the requested packages into a "staging area" directory and then performs the following steps:

If the package contains a require file (see pkg_create ), then this is executed first with the flag .b INSTALL to see whether or not installation should continue (a non-zero exit status means no).

If an install script exists for the package, it is then executed as follows:

First, before installing files in the data set, the install script is called with the flags

<script> pkg-name PRE-INSTALL

Where pkg-name is the name of the package in question and PRE-INSTALL is a keyword denoting that this is the "pre installation" pass. Using the packing list as a guide, files are then moved (or copied, as necessary) from the staging area into their new homes and the install script is then executed a second time with the flags

<script> pkg-name POST-INSTALL

This all allows you to write an install script that does "before and after" actions.

After installation is complete, a copy of the packing list, in addition to any deinstall script the package might have, is copied into /var/pkg/<pkg-name> for subsequent possible use by pkg-delete. Finally, the staging area is deleted and the program terminates.

BUGS
Sure to be some.
"SEE ALSO"
pkg_create "(" 1 ")," pkg_info "(" 1 ")," pkg_delete "(" 1 "),"
AUTHORS
Jordan Hubbard