368b3399cd
Made pkg_add -n less bitchy. Made -p in pkg_add override "default" package location in pkg_create. Added concept of "slave" and "master" modes, allowing many different things to be done to packing lists on the fly. This is really something for front-end drivers to use, but also something for the more expert user. rename()'ing files before trying to copy them, thus saving considerable time when targets and staging area are on same filesystem.
189 lines
4.8 KiB
Groff
189 lines
4.8 KiB
Groff
.\"
|
|
.\" 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
|
|
.\"
|
|
.TH pkg_add 1 "July 18, 1993" "" "FreeBSD"
|
|
|
|
.SH NAME
|
|
pkg_add - a utility for installing software package distributions.
|
|
.SH SYNOPSIS
|
|
.na
|
|
.B pkg_add
|
|
.RB [options]
|
|
.RB "pkg-name\ [.. pkg-name]"
|
|
|
|
.SH DESCRIPTION
|
|
The
|
|
.B pkg_add
|
|
command is used to extract packages that have been previously created
|
|
with the
|
|
.B pkg_create
|
|
command.
|
|
|
|
.SH OPTIONS
|
|
.TP
|
|
The following command line options are supported.
|
|
.TP
|
|
.B \-v
|
|
Turns on verbose output.
|
|
.B "Optional."
|
|
.TP
|
|
.B \-I
|
|
If an installation script exists for a given package, do not execute it.
|
|
.B "Optional."
|
|
.TP
|
|
.B \-n
|
|
Don't actually install a package, just report the steps that
|
|
would be taken if it was.
|
|
.B "Optional."
|
|
.TP
|
|
.B \-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!
|
|
.B "Optional."
|
|
.TP
|
|
.BI "\-p\ " prefix
|
|
Sets
|
|
.I 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
|
|
.B 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
|
|
.B MASTER
|
|
and
|
|
.B SLAVE
|
|
mode (see
|
|
.B \-M
|
|
and
|
|
.B \-S
|
|
options).
|
|
.B "Optional."
|
|
.TP
|
|
.BI "\-t\ " template
|
|
Use
|
|
.I template
|
|
as the input to mktemp(3). By default, this is the string
|
|
.B /tmp/instmp.XXXXXX
|
|
, but it may be necessary to override it in the situation where
|
|
space in your
|
|
.B /tmp
|
|
directory is limited. Be sure to leave some number of `X' characters
|
|
for mktemp(3) to fill in with a unique ID.
|
|
.B "Optional."
|
|
.TP
|
|
.B \-M
|
|
Run in
|
|
.B MASTER
|
|
mode. This is a very specialized mode for running
|
|
.B pkg_add
|
|
and is meant to be run in conjunction with
|
|
.B SLAVE
|
|
mode. When run in this mode,
|
|
.B pkg_add
|
|
does no work beyond extracting the package into a temporary staging
|
|
area (see
|
|
.B \-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
|
|
.B sed(1).
|
|
When used in conjunction with
|
|
.B SLAVE
|
|
mode, it allows you to make radical changes to the package structure
|
|
before acting on its contents.
|
|
.TP
|
|
.B \-S
|
|
Run in
|
|
.B SLAVE
|
|
mode. This is a very specialized mode for running
|
|
.B pkg_add
|
|
and is meant to be run in conjunction with
|
|
.B MASTER
|
|
mode. When run in this mode,
|
|
.B 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.
|
|
.PP
|
|
.SH "TECHNICAL DETAILS"
|
|
.B
|
|
pkg_add
|
|
is fairly simple. It simply extracts the requested packages into
|
|
a "staging area" directory and then performs the following steps:
|
|
.PP
|
|
If the package contains a
|
|
.B require
|
|
file (see
|
|
.B 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).
|
|
.PP
|
|
If an
|
|
.B install
|
|
script exists for the package, it is then executed as follows:
|
|
.PP
|
|
First, before installing files in the data set, the
|
|
.B install
|
|
script is called with the flags
|
|
.PP
|
|
.B <script>
|
|
.I pkg-name PRE-INSTALL
|
|
.PP
|
|
Where
|
|
.I pkg-name
|
|
is the name of the package in question and
|
|
.I 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
|
|
.B install
|
|
script is then executed a second time with the flags
|
|
.PP
|
|
.B <script>
|
|
.I pkg-name POST-INSTALL
|
|
.PP
|
|
This all allows you to write an
|
|
.B install
|
|
script that does "before and after" actions.
|
|
.PP
|
|
After installation is complete, a copy of the packing list, in addition
|
|
to any
|
|
.B deinstall
|
|
script the package might have, is copied into /var/pkg/<pkg-name>
|
|
for subsequent possible use by
|
|
.B pkg-delete.
|
|
Finally, the staging area is deleted and the program terminates.
|
|
.PP
|
|
.SH BUGS
|
|
Sure to be some.
|
|
.SH "SEE ALSO"
|
|
.BR pkg_create "(" 1 "),"
|
|
.BR pkg_info "(" 1 "),"
|
|
.BR pkg_delete "(" 1 "),"
|
|
.SH AUTHORS
|
|
Jordan Hubbard
|
|
|