mirror of
https://github.com/freebsd/freebsd-src.git
synced 2024-11-28 09:02:44 +00:00
More changes from John T. Kohl. Man pages, mostly.
Submitted by: jtkohl
This commit is contained in:
parent
8f396ebfb6
commit
ad12efc944
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=4997
@ -14,190 +14,295 @@
|
||||
.\" Jordan K. Hubbard
|
||||
.\"
|
||||
.\"
|
||||
.\" @(#)pkg_add.1
|
||||
.\" @(#)pkg_add.8
|
||||
.\"
|
||||
.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
|
||||
.Dd November 25, 1994
|
||||
.Dt pkg_add 8
|
||||
.Os NetBSD 1.0
|
||||
.Sh NAME
|
||||
.Nm pkg_add
|
||||
.Nd a utility for installing software package distributions.
|
||||
.Sh SYNOPSIS
|
||||
.Nm
|
||||
.Op Fl vInfRMS
|
||||
.Op Fl t Ar template
|
||||
.Op Fl p Ar prefix
|
||||
.Ar pkg-name ...
|
||||
.Sh DESCRIPTION
|
||||
The
|
||||
.B pkg_add
|
||||
.Nm
|
||||
command is used to extract packages that have been previously created
|
||||
with the
|
||||
.B pkg_create
|
||||
.Xr pkg_create 8
|
||||
command.
|
||||
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
The following command line options are supported.
|
||||
.TP
|
||||
.B \-v
|
||||
.Sh WARNING
|
||||
.Bf -emphasis
|
||||
Since the
|
||||
.Nm
|
||||
command may execute scripts or programs contained within a package file,
|
||||
your system may be susceptible to ``trojan horses'' or other subtle
|
||||
attacks from miscreants who create dangerous package files.
|
||||
.Pp
|
||||
You are advised to verify the competence and identity of those who
|
||||
provide installable package files. For extra protection, use the
|
||||
.Fl M
|
||||
flag to extract the package file, and inspect its contents and scripts
|
||||
to insure it poses no danger to your system's integrity. Pay particular
|
||||
attention to any +INSTALL, +DEINSTALL, +REQUIRE or +MTREE_DIRS files,
|
||||
and inspect the +CONTENTS file for
|
||||
.Cm @cwd ,
|
||||
.Cm @mode
|
||||
(check for setuid),
|
||||
.Cm @dirrm ,
|
||||
.Cm @exec ,
|
||||
and
|
||||
.Cm @unexec
|
||||
directives, and/or use the
|
||||
.Xr pkg_info 1
|
||||
command to examine the package file.
|
||||
.Ef
|
||||
|
||||
.Sh OPTIONS
|
||||
The following command line arguments are supported.
|
||||
.Bl -tag -width indent
|
||||
.It Ar pkg-name ...
|
||||
Packages in the named files are installed.
|
||||
.It Fl v
|
||||
Turns on verbose output.
|
||||
.B "Optional."
|
||||
.TP
|
||||
.B \-I
|
||||
.Em "Optional."
|
||||
.It Fl I
|
||||
If an installation script exists for a given package, do not execute it.
|
||||
.B "Optional."
|
||||
.TP
|
||||
.B \-n
|
||||
.Em "Optional."
|
||||
.It Fl n
|
||||
Don't actually install a package, just report the steps that
|
||||
would be taken if it was.
|
||||
.B "Optional."
|
||||
.TP
|
||||
.B \-R
|
||||
.Em "Optional."
|
||||
.It Fl 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
|
||||
.Em "Optional."
|
||||
.It Fl f
|
||||
Forces installation to proceed even if prerequisite packages are not
|
||||
installed or the requirements script fails.
|
||||
.Em "Optional."
|
||||
.It Fl p Ar prefix
|
||||
Sets
|
||||
.I prefix
|
||||
.Ar 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
|
||||
.Nm
|
||||
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
|
||||
.Cm MASTER
|
||||
and
|
||||
.B SLAVE
|
||||
mode (see
|
||||
.B \-M
|
||||
.Cm SLAVE
|
||||
mode (see the
|
||||
.Fl M
|
||||
and
|
||||
.B \-S
|
||||
.Fl S
|
||||
options).
|
||||
.B "Optional."
|
||||
.TP
|
||||
.BI "\-t\ " template
|
||||
.Em "Optional."
|
||||
.It Fl t Ar 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
|
||||
.Ar template
|
||||
as the input to
|
||||
.Xr mktemp 3
|
||||
when creating a ``staging area.''
|
||||
By default, this is the string
|
||||
.Pa /tmp/instmp.XXXXXX ,
|
||||
but it may be necessary to override it in the situation where
|
||||
space in your
|
||||
.B /tmp
|
||||
.Pa /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
|
||||
for
|
||||
.Xr mktemp 3
|
||||
to fill in with a unique ID.
|
||||
.Pp
|
||||
You can get a performance boost by setting the staging area
|
||||
.Ar template
|
||||
to reside on the same disk partition as target directories for package
|
||||
file installation; often this is
|
||||
.Pa /usr .
|
||||
.Em "Optional."
|
||||
.It Fl M
|
||||
Run in
|
||||
.B MASTER
|
||||
.Cm MASTER
|
||||
mode. This is a very specialized mode for running
|
||||
.B pkg_add
|
||||
.Nm
|
||||
and is meant to be run in conjunction with
|
||||
.B SLAVE
|
||||
.Cm SLAVE
|
||||
mode. When run in this mode,
|
||||
.B pkg_add
|
||||
.Nm
|
||||
does no work beyond extracting the package into a temporary staging
|
||||
area (see
|
||||
.B \-t
|
||||
area (see the
|
||||
.Fl 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).
|
||||
.Xr sed 1 .
|
||||
When used in conjunction with
|
||||
.B SLAVE
|
||||
.Cm SLAVE
|
||||
mode, it allows you to make radical changes to the package structure
|
||||
before acting on its contents.
|
||||
.TP
|
||||
.B \-S
|
||||
.It Fl S
|
||||
Run in
|
||||
.B SLAVE
|
||||
.Cm SLAVE
|
||||
mode. This is a very specialized mode for running
|
||||
.B pkg_add
|
||||
.Nm
|
||||
and is meant to be run in conjunction with
|
||||
.B MASTER
|
||||
.Cm MASTER
|
||||
mode. When run in this mode,
|
||||
.B pkg_add
|
||||
.Nm
|
||||
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
|
||||
.El
|
||||
.Sh TECHNICAL DETAILS
|
||||
.Nm
|
||||
is fairly simple. It simply extracts the requested packages into
|
||||
a "staging area" directory and then performs the following steps:
|
||||
.PP
|
||||
a ``staging area'' directory and then performs the following steps:
|
||||
.Bl -enum -indent indent
|
||||
.It
|
||||
It checks whether the package is already recorded as installed; if so,
|
||||
the installation terminates.
|
||||
.It
|
||||
It checks whether all the package dependencies (from
|
||||
.Cm @pkgdep
|
||||
directives, see
|
||||
.Xr pkg_create 8 )
|
||||
are met; if not, the missing dependencies are printed and the
|
||||
installation terminates.
|
||||
.It
|
||||
If the package contains a
|
||||
.B require
|
||||
.Ar require
|
||||
file (see
|
||||
.B pkg_create
|
||||
), then this is executed first with the flags
|
||||
.PP
|
||||
.B <script>
|
||||
.I pkg-name INSTALL
|
||||
.PP
|
||||
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
|
||||
.Xr pkg_create 8 ),
|
||||
then this is executed first as
|
||||
.Bd -filled -offset indent -compact
|
||||
.Cm require
|
||||
.Ar <pkg-name>
|
||||
.Ar INSTALL
|
||||
.Ed
|
||||
where
|
||||
.Ar <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
|
||||
.Ar INSTALL
|
||||
is a keyword denoting that this is an installation requirements check.
|
||||
.It
|
||||
If an
|
||||
.Ar install
|
||||
script exists for the package, it is then executed as
|
||||
.Bd -filled -offset indent -compact
|
||||
.Cm install
|
||||
.Ar <pkg-name>
|
||||
.Ar PRE-INSTALL
|
||||
.Ed
|
||||
where
|
||||
.Ar <pkg-name>
|
||||
is the name of the package in question and
|
||||
.Ar PRE-INSTALL
|
||||
is a keyword denoting that this is the preinstallation phase.
|
||||
.It
|
||||
Using the packing list (the
|
||||
.Pa +CONTENTS
|
||||
file) as a guide, files are then moved (or copied, as necessary) from
|
||||
the staging area into their final locations.
|
||||
.It
|
||||
If the package contains an
|
||||
.Ar mtreefile
|
||||
file (see the
|
||||
.Fl m
|
||||
option to
|
||||
.Xr pkg_create 8 ),
|
||||
then mtree is invoked as
|
||||
.Bd -filled -offset indent -compact
|
||||
.Cm mtree
|
||||
.Fl u
|
||||
.Fl f
|
||||
.Ar mtreefile
|
||||
.Fl d
|
||||
.Fl e
|
||||
.Fl p
|
||||
.Pa prefix
|
||||
.Ed
|
||||
where
|
||||
.Pa prefix
|
||||
is either the prefix specified with the
|
||||
.Fl p
|
||||
flag or, if no
|
||||
.Fl p
|
||||
flag was specified, the name of the first directory named by a
|
||||
.Cm @cwd
|
||||
directive within this package.
|
||||
.It
|
||||
If an
|
||||
.Ar install
|
||||
script exists for the package, it is then executed as
|
||||
.Bd -filled -offset indent -compact
|
||||
.Cm <script>
|
||||
.Ar <pkg-name>
|
||||
.Ar POST-INSTALL
|
||||
.Ed
|
||||
This all allows you to write a single
|
||||
.Ar install
|
||||
script that does both ``before and after'' actions.
|
||||
.It
|
||||
After installation is complete, a copy of the packing list,
|
||||
.Ar deinstall
|
||||
script, description, and display files are copied into
|
||||
.Pa /var/db/pkg/<pkg-name>
|
||||
for subsequent possible use by
|
||||
.Xr pkg_delete 8 .
|
||||
Any package dependencies are recorded in the other packages'
|
||||
.Pa /var/db/pkg/<other-pkg>/+REQUIRED_BY
|
||||
file.
|
||||
.It
|
||||
Finally, the staging area is deleted and the program terminates.
|
||||
.El
|
||||
.Pp
|
||||
All the scripts are called with the environment variable
|
||||
.B PKG_PREFIX
|
||||
.Ev PKG_PREFIX
|
||||
set to the installation prefix (see the
|
||||
.B -p
|
||||
.Fl p
|
||||
option above). This allows a package author to write a script
|
||||
that reliably performs some action on the directory where the package
|
||||
is installed, even if the user might change it by
|
||||
.B -p
|
||||
when
|
||||
.B pkg_add
|
||||
is run.
|
||||
.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/db/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
|
||||
|
||||
is installed, even if the user might change it with the
|
||||
.Fl p
|
||||
flag to
|
||||
.Cm pkg_add .
|
||||
.Sh SEE ALSO
|
||||
.Xr pkg_info 1 ,
|
||||
.Xr mktemp 3 ,
|
||||
.Xr sysconf 3 ,
|
||||
.Xr mtree 8 ,
|
||||
.Xr pkg_create 8 ,
|
||||
.Xr pkg_delete 8 .
|
||||
.Sh AUTHORS
|
||||
.Bl -tag -width indent -compact
|
||||
.It "Jordan Hubbard"
|
||||
most of the work
|
||||
.It "John Kohl"
|
||||
refined it for NetBSD
|
||||
.El
|
||||
.Sh BUGS
|
||||
Hard links between files in a distribution are only preserved if either
|
||||
(1) the staging area is on the same file system as the target directory of
|
||||
all the links to the file, or (2) all the links to the file are bracketed by
|
||||
.Cm @cwd
|
||||
directives in the contents file,
|
||||
.Em and
|
||||
and the link names are extracted with a single
|
||||
.Cm tar
|
||||
command (not split between
|
||||
invocations due to exec argument-space limitations--this depends on the
|
||||
value returned by
|
||||
.Xr sysconf _SC_ARG_MAX ).
|
||||
.Pp
|
||||
Sure to be others.
|
||||
|
@ -14,21 +14,35 @@
|
||||
.\" Jordan K. Hubbard
|
||||
.\"
|
||||
.\"
|
||||
.\" @(#)pkg_create.1
|
||||
.\" @(#)pkg_create.8
|
||||
.\" $Id: pkg_create.8,v 1.8 1994/11/26 19:12:17 jtk Exp $
|
||||
.\" hacked up by John Kohl for NetBSD--fixed a few bugs, extended keywords,
|
||||
.\" added dependency tracking, etc.
|
||||
.\"
|
||||
.TH pkg_create 1 "July 18, 1993" "" "FreeBSD"
|
||||
|
||||
.SH NAME
|
||||
pkg_create - a utility for creating software package distributions.
|
||||
.SH SYNOPSIS
|
||||
.na
|
||||
.B pkg_create
|
||||
.RB [options]
|
||||
.RB pkg-name
|
||||
|
||||
.SH DESCRIPTION
|
||||
.Dd November 25, 1994
|
||||
.Dt pkg_create 8
|
||||
.Os NetBSD 1.0
|
||||
.Sh NAME
|
||||
.Nm pkg_create
|
||||
.Nd a utility for creating software package distributions.
|
||||
.Sh SYNOPSIS
|
||||
.Nm
|
||||
.Op Fl YNhv
|
||||
.Op Fl p Ar prefix
|
||||
.Op Fl f Ar contents
|
||||
.Op Fl i Ar iscript
|
||||
.Op Fl k Ar dscript
|
||||
.Op Fl r Ar rscript
|
||||
.Op Fl t Ar template
|
||||
.Op Fl X Ar excludefile
|
||||
.Op Fl D Ar displayfile
|
||||
.Op Fl m Ar mtreefile
|
||||
.Fl d Ar description
|
||||
.Fl f Ar packlist
|
||||
.Ar pkg-name
|
||||
.Sh DESCRIPTION
|
||||
The
|
||||
.B pkg_create
|
||||
.Nm
|
||||
command is used to create packages that will subsequently be fed to
|
||||
one of the package extraction/info utilities. The input description
|
||||
and command line arguments for the creation of a package are not
|
||||
@ -36,118 +50,134 @@ really meant to be human-generated, though it is easy enough to
|
||||
do so. It is more expected that you will use a front-end tool for
|
||||
the job rather than muddling through it yourself. Nonetheless, a short
|
||||
description of the input syntax is included in this document.
|
||||
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
.Sh OPTIONS
|
||||
The following command line options are supported.
|
||||
.TP
|
||||
.B \-Y
|
||||
Assume a default answer of `Yes' for any questions asked.
|
||||
.B "Optional."
|
||||
.TP
|
||||
.B \-N
|
||||
Assume a default answer of `No' for any questions asked.
|
||||
.B "Optional."
|
||||
.TP
|
||||
.B \-v
|
||||
Turns on verbose output.
|
||||
.B "Optional."
|
||||
.TP
|
||||
.BI "\-c\ " [-]desc
|
||||
Fetch package "one line description" from file
|
||||
.I desc
|
||||
or, if preceeded by
|
||||
.B -
|
||||
, the argument itself. This string should also
|
||||
.Bl -tag -width indent
|
||||
.It Fl f Ar packinglist
|
||||
Fetch ``packing list'' for package from the file
|
||||
.Ar packinglist
|
||||
or
|
||||
.Cm stdin
|
||||
if
|
||||
.Ar packinglist
|
||||
is a
|
||||
.Cm -
|
||||
(dash).
|
||||
.Em "Mandatory."
|
||||
.It Fl c Ar [-]desc
|
||||
Fetch package ``one line description'' from file
|
||||
.Ar desc
|
||||
or, if preceded by
|
||||
.Cm - ,
|
||||
the argument itself. This string should also
|
||||
give some idea of which version of the product (if any) the package
|
||||
represents.
|
||||
.B "Mandatory."
|
||||
.TP
|
||||
.BI "\-d\ " [-]desc
|
||||
.Em "Mandatory."
|
||||
.It Fl d Ar [-]desc
|
||||
Fetch long description for package from file
|
||||
.I desc
|
||||
or, if preceeded by
|
||||
.B -
|
||||
, the argument itself.
|
||||
.B "Mandatory."
|
||||
.TP
|
||||
.BI "\-f\ " file
|
||||
Fetch "packing list" for package from
|
||||
.I file
|
||||
or
|
||||
.B stdin
|
||||
if
|
||||
.I file
|
||||
is a
|
||||
.B -
|
||||
(dash).
|
||||
.B "Mandatory."
|
||||
.TP
|
||||
.B -h
|
||||
.Ar desc
|
||||
or, if preceded by
|
||||
.Cm - ,
|
||||
the argument itself.
|
||||
.Em "Mandatory."
|
||||
.It Fl Y
|
||||
Assume a default answer of `Yes' for any questions asked.
|
||||
.Em "Optional."
|
||||
.It Fl N
|
||||
Assume a default answer of `No' for any questions asked.
|
||||
.Em "Optional."
|
||||
.It Fl v
|
||||
Turns on verbose output.
|
||||
.Em "Optional."
|
||||
.It Fl h
|
||||
Forces tar to follow symbolic links, so that the files they point to
|
||||
are dumped, rather than the links themselves.
|
||||
.TP
|
||||
.BI "\-i\ " script
|
||||
.It Fl i Ar iscript
|
||||
Sets
|
||||
.I script
|
||||
.Ar iscript
|
||||
to be the install procedure for the package. This can be any
|
||||
executable program (or shell script). It will be invoked automatically
|
||||
when the package is later installed.
|
||||
.B "Optional."
|
||||
.TP
|
||||
.BI "\-p\ " prefix
|
||||
.Em "Optional."
|
||||
.It Fl p Ar prefix
|
||||
Sets
|
||||
.I prefix
|
||||
As the initial directory "base" to start from in selecting files for
|
||||
.Ar prefix
|
||||
as the initial directory ``base'' to start from in selecting files for
|
||||
the package.
|
||||
.B "Optional."
|
||||
.TP
|
||||
.BI "\-k\ " script
|
||||
.Em "Optional."
|
||||
.It Fl k Ar dscript
|
||||
Sets
|
||||
.I script
|
||||
.Ar dscript
|
||||
to be the de-install procedure for the package. This can be any
|
||||
executable program (or shell script). It will be invoked automatically
|
||||
when the package is later (if ever) de-installed.
|
||||
.B "Optional."
|
||||
.TP
|
||||
.BI "\-r\ " script
|
||||
.Em "Optional."
|
||||
.It Fl r Ar rscript
|
||||
Sets
|
||||
.I script
|
||||
to be the "requirements" procedure for the package. This can be any
|
||||
.Ar rscript
|
||||
to be the ``requirements'' procedure for the package. This can be any
|
||||
executable program (or shell script). It will be invoked automatically
|
||||
at installation/deinstallation time to determine whether or not
|
||||
installation/deinstallation should proceed.
|
||||
.B "Optional."
|
||||
.TP
|
||||
.BI "\-t\ " template
|
||||
.Em "Optional."
|
||||
.It Fl t Ar template
|
||||
Use
|
||||
.I template
|
||||
as the input to mktemp(3). By default, this is the string
|
||||
.B /tmp/instmp.XXXXXX,
|
||||
.Ar template
|
||||
as the input to
|
||||
.Xr mktemp 3 .
|
||||
By default, this is the string
|
||||
.Pa /tmp/instmp.XXXXXX ,
|
||||
but it may be necessary to override it in the situation where
|
||||
space in your
|
||||
.B /tmp
|
||||
.Pa /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
|
||||
.BI "\-X\ " file
|
||||
for
|
||||
.Xr mktemp 3
|
||||
to fill in with a unique ID.
|
||||
.Em "Optional."
|
||||
.It Fl X Ar excludefile
|
||||
Pass
|
||||
.I file
|
||||
.Ar excludefile
|
||||
as a
|
||||
.B \-exclude-from
|
||||
.Fl exclude-from
|
||||
argument to
|
||||
.B tar
|
||||
.Cm tar
|
||||
when creating final package. See
|
||||
.B tar
|
||||
.Cm tar
|
||||
man page (or run
|
||||
.B tar
|
||||
.Cm tar
|
||||
with
|
||||
.B --help
|
||||
.Fl -help
|
||||
flag) for further information on using this flag.
|
||||
.PP
|
||||
.SH "TECHNICAL DETAILS"
|
||||
The "packing list" format (see \fB-f\fR) is fairly simple, being
|
||||
.It Fl D Ar displayfile
|
||||
Display the file (using
|
||||
.Xr more 1 )
|
||||
after installing the package. Useful for things like
|
||||
legal notices on almost-free software, etc.
|
||||
.It Fl m Ar mtreefile
|
||||
Run
|
||||
.Xr mtree 8
|
||||
with input from mtreefile before the package is installed.
|
||||
Mtree is invoked as
|
||||
.Cm mtree
|
||||
.Fl u
|
||||
.Fl f
|
||||
.Ar mtreefile
|
||||
.Fl d
|
||||
.Fl e
|
||||
.Fl p
|
||||
.Pa prefix ,
|
||||
where
|
||||
.Pa prefix
|
||||
is the name of the first directory named by a
|
||||
.Cm @cwd
|
||||
directive.
|
||||
.El
|
||||
.Pp
|
||||
.Sh PACKING LIST DETAILS
|
||||
The ``packing list'' format (see
|
||||
.Fl f )
|
||||
is fairly simple, being
|
||||
nothing more than a single column of filenames to include in the
|
||||
package. However, since absolute pathnames are generally a bad idea
|
||||
for a package that could be installed potentially anywhere, there is
|
||||
@ -155,126 +185,178 @@ another method of specifying where things are supposed to go
|
||||
and, optionally, what ownership and mode information they should be
|
||||
installed with. This is done by imbeding specialized command sequences
|
||||
in the packing list. Briefly described, these sequences are:
|
||||
.TP
|
||||
.BI "@cwd\ " directory
|
||||
.Bl -tag -width indent -compact
|
||||
.It Cm @cwd Ar directory
|
||||
Sets the internal directory pointer to point to
|
||||
.I directory.
|
||||
.Ar directory .
|
||||
All subsequent filenames will be assumed relative to this directory.
|
||||
Note:
|
||||
.BI @cd
|
||||
.Cm @cd
|
||||
is also an alias for this command.
|
||||
.TP
|
||||
.BI "@srcdir\ " directory
|
||||
.It Cm @srcdir Ar directory
|
||||
Sets the internal directory pointer for _creation only_ to
|
||||
.I directory.
|
||||
.Ar directory .
|
||||
That is to say that it overrides
|
||||
.I @cwd
|
||||
.Cm @cwd
|
||||
for package creation but not extraction.
|
||||
.TP
|
||||
.BI "@exec\ " command
|
||||
.It Cm @exec Ar command
|
||||
Execute
|
||||
.I command
|
||||
.Ar command
|
||||
as part of the unpacking process. If
|
||||
.I command
|
||||
.Ar command
|
||||
contains a any of the following sequences somewhere in it, they will
|
||||
be expanded inline. For the following examples, assume that
|
||||
.B @cwd
|
||||
.Cm @cwd
|
||||
is set to
|
||||
.B /usr/local
|
||||
.Pa /usr/local
|
||||
and the last extracted file was
|
||||
.B bin/emacs.
|
||||
.TP
|
||||
.I "%F"
|
||||
.Pa bin/emacs .
|
||||
.Bl -tag -width indent -compact
|
||||
.It Cm "%F"
|
||||
Expands to the last filename extracted (as specified), in the example case
|
||||
.B bin/emacs
|
||||
.TP
|
||||
.I "%D"
|
||||
.Pa bin/emacs
|
||||
.It Cm "%D"
|
||||
Expands to the current directory prefix, as set with
|
||||
.B @cwd,
|
||||
.Cm @cwd ,
|
||||
in the example case
|
||||
.B /usr/local.
|
||||
.TP
|
||||
.I "%B"
|
||||
Expands to the "basename" of the fully qualified filename, that
|
||||
.Pa /usr/local .
|
||||
.It Cm "%B"
|
||||
Expands to the ``basename'' of the fully qualified filename, that
|
||||
is the current directory prefix, plus the last filespec, minus
|
||||
the trailing filename. In the example case, that would be
|
||||
.B /usr/local/bin.
|
||||
.TP
|
||||
.I "%f"
|
||||
Expands to the "filename" part of the fully qualified name, or
|
||||
.Pa /usr/local/bin .
|
||||
.It Cm "%f"
|
||||
Expands to the ``filename'' part of the fully qualified name, or
|
||||
the converse of
|
||||
.B %B
|
||||
, being in the example case,
|
||||
.B emacs.
|
||||
.TP
|
||||
.BI "@unexec\ " command
|
||||
.Cm %B ,
|
||||
being in the example case,
|
||||
.Pa emacs .
|
||||
.El
|
||||
.It Cm @unexec Ar command
|
||||
Execute
|
||||
.I command
|
||||
.Ar command
|
||||
as part of the deinstallation process. Expansion of special
|
||||
.B %
|
||||
.Cm %
|
||||
sequences is the same as for
|
||||
.B @exec.
|
||||
.Cm @exec .
|
||||
This command is not executed during the package add, as
|
||||
.B @exec
|
||||
.Cm @exec
|
||||
is, but rather when the package is deleted. This is useful
|
||||
for creating links and other ancillary files that were created
|
||||
as a result of adding the package, but not directly known to
|
||||
the package's table of contents (and hence not automatically
|
||||
removable). The advantage of using
|
||||
.B @unexec
|
||||
over a deinstallation script is that you can use the "special
|
||||
sequence expansion" to get at files regardless of where they've
|
||||
.Cm @unexec
|
||||
over a deinstallation script is that you can use the ``special
|
||||
sequence expansion'' to get at files regardless of where they've
|
||||
been potentially redirected (see
|
||||
.B -p)
|
||||
.TP
|
||||
.BI "@mode\ " mode
|
||||
.Fl p )
|
||||
.It Cm @mode Ar mode
|
||||
Sets default permission for all subsequently extracted files to
|
||||
.I mode.
|
||||
.Ar mode .
|
||||
Format is the same as that used by the
|
||||
.B chmod
|
||||
.Cm chmod
|
||||
command (well, considering that it's later handed off to it, that's
|
||||
no surprise). Use without an arg to set back to default (extraction)
|
||||
permissions.
|
||||
.TP
|
||||
.BI "@owner\ " user
|
||||
.It Cm @owner Ar user
|
||||
Sets default ownership for all subsequently extracted files to
|
||||
.I user.
|
||||
.Ar user .
|
||||
Use without an arg to set back to default (extraction)
|
||||
ownership.
|
||||
.TP
|
||||
.BI "@group\ " group
|
||||
.It Cm @group Ar group
|
||||
Sets default group ownership for all subsequently extracted files to
|
||||
.I group.
|
||||
.Ar group .
|
||||
Use without an arg to set back to default (extraction)
|
||||
group ownership.
|
||||
.TP
|
||||
.BI "@comment\ " string
|
||||
.It Cm @comment Ar string
|
||||
Imbed a comment in the packing list. Useful in
|
||||
trying to document some particularly hairy sequence that
|
||||
may trip someone up later.
|
||||
.TP
|
||||
.BI "@ignore\ " file
|
||||
.It Cm @ignore
|
||||
Used internally to tell extraction to ignore the next file (don't
|
||||
copy it anywhere), as it's used for some special purpose. Also useful
|
||||
if you want to pack some specialized datafiles in with a distribution
|
||||
for your install script (or something) and want to have the installer
|
||||
ignore it.
|
||||
.TP
|
||||
.BI "@name\ " name
|
||||
copy it anywhere), as it's used for some special purpose.
|
||||
.It Cm @ignore_inst
|
||||
Similar to
|
||||
.Cm @ignore ,
|
||||
but the ignoring of the next file is delayed one evaluation cycle. This
|
||||
makes it possible to use this directive in the
|
||||
.Ar packinglist
|
||||
file, so you can pack a
|
||||
specialized datafile in with a distribution for your install script (or
|
||||
something) yet have the installer ignore it.
|
||||
.It Cm @name Ar name
|
||||
Sets the name of the package. This is mandatory and is usually
|
||||
put at the top. This name is potentially different than the name of
|
||||
the file it came in, and is used when keeping track of the package
|
||||
for later deinstallation. Note that
|
||||
.B pkg_create
|
||||
.Nm
|
||||
will derive this field from the package name and add it automatically
|
||||
if none is given.
|
||||
|
||||
.SH BUGS
|
||||
Sure to be some.
|
||||
.SH "SEE ALSO"
|
||||
.BR pkg_add "(" 1 "),"
|
||||
.BR pkg_info "(" 1 "),"
|
||||
.BR pkg_delete "(" 1 "),"
|
||||
.SH AUTHORS
|
||||
Jordan Hubbard
|
||||
|
||||
.It Cm @dirrm Ar name
|
||||
Declare directory
|
||||
.Pa name
|
||||
to be deleted at deinstall time. By default, directories created by a
|
||||
package installation are not deleted when the package is deinstalled;
|
||||
this provides an explicit directory cleanup method. This directive
|
||||
should appear at the end of the package list. If more than one
|
||||
.Cm @dirrm
|
||||
directives are used, the directories are removed in the order specified.
|
||||
The
|
||||
.Pa name
|
||||
directory will not be removed unless it is empty.
|
||||
.It Cm @mtree Ar name
|
||||
Declare
|
||||
.Pa name
|
||||
as an
|
||||
.Xr mtree 8
|
||||
input file to be used at install time (see
|
||||
.Fl m
|
||||
above). Only the first
|
||||
.Cm @mtree
|
||||
directive is honored.
|
||||
.It Cm @display Ar name
|
||||
Declare
|
||||
.Pa name
|
||||
as the file to be displayed at install time (see
|
||||
.Fl D
|
||||
above).
|
||||
.It Cm @pkgdep Ar pkgname
|
||||
Declares a dependency on the
|
||||
.Ar pkgname
|
||||
package. The
|
||||
.Ar pkgname
|
||||
package must be installed before this package may be
|
||||
installed, and this package must be deinstalled before the
|
||||
.Ar pkgname
|
||||
package is deinstalled. Multiple
|
||||
.Cm @pkgdep
|
||||
directives may be used if hte package depends on multiple other packages.
|
||||
.El
|
||||
.Sh SEE ALSO
|
||||
.Xr pkg_add 8 ,
|
||||
.Xr pkg_info 1 ,
|
||||
.Xr sysconf 3 ,
|
||||
.Xr pkg_delete 8 .
|
||||
.Sh HISTORY
|
||||
The
|
||||
.Nm
|
||||
command first appeared in FreeBSD.
|
||||
.Sh AUTHORS
|
||||
.Bl -tag -width indent -compact
|
||||
.It "Jordan Hubbard"
|
||||
most of the work
|
||||
.It "John Kohl"
|
||||
refined it for NetBSD
|
||||
.El
|
||||
.Sh BUGS
|
||||
Hard links between files in a distribution must be bracketed by
|
||||
.Cm @cwd
|
||||
directives in order to be preserved as hard links when the package is
|
||||
extracted. They additionally must not end up being split between
|
||||
.Cm tar
|
||||
invocations due to exec argument-space limitations (this depends on the
|
||||
value returned by
|
||||
.Xr sysconf _SC_ARG_MAX ).
|
||||
.Pp
|
||||
Sure to be others.
|
||||
|
@ -14,111 +14,171 @@
|
||||
.\" Jordan K. Hubbard
|
||||
.\"
|
||||
.\"
|
||||
.\" @(#)pkg_delete.1
|
||||
.\" @(#)pkg_delete.8
|
||||
.\"
|
||||
.TH pkg_delete 1 "July 18, 1993" "" "FreeBSD"
|
||||
|
||||
.SH NAME
|
||||
pkg_delete - a utility for deleting previously installed software package distributions.
|
||||
.SH SYNOPSIS
|
||||
.na
|
||||
.B pkg_delete
|
||||
.RB [options]
|
||||
.RB "pkg-name\ [.. pkg-name]"
|
||||
|
||||
.SH DESCRIPTION
|
||||
.Dd November 25, 1994
|
||||
.Dt pkg_delete 8
|
||||
.Os NetBSD 1.0
|
||||
.Sh NAME
|
||||
.Nm pkg_delete
|
||||
.Nd a utility for deleting previously installed software package distributions.
|
||||
.Sh SYNOPSIS
|
||||
.Nm
|
||||
.Op Fl vDdnf
|
||||
.Op Fl p Ar prefix
|
||||
.Ar pkg-name ...
|
||||
.Sh DESCRIPTION
|
||||
The
|
||||
.B pkg_delete
|
||||
.Nm
|
||||
command is used to delete packages that have been previously installed
|
||||
with the
|
||||
.B pkg_add
|
||||
.Xr pkg_add 8
|
||||
command.
|
||||
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
.Sh WARNING
|
||||
.Bf -emphasis
|
||||
Since the
|
||||
.Nm
|
||||
command may execute scripts or programs provided by a package file,
|
||||
your system may be susceptible to ``trojan horses'' or other subtle
|
||||
attacks from miscreants who create dangerous package files.
|
||||
.Pp
|
||||
You are advised to verify the competence and identity of those who
|
||||
provide installable package files. For extra protection, examine all
|
||||
the package control files in the package record directory (
|
||||
.Pa /var/db/pkg/<pkg-name>/ ).
|
||||
Pay particular
|
||||
attention to any +INSTALL, +DEINSTALL, +REQUIRE or +MTREE_DIRS files,
|
||||
and inspect the +CONTENTS file for
|
||||
.Cm @cwd ,
|
||||
.Cm @mode
|
||||
(check for setuid),
|
||||
.Cm @dirrm ,
|
||||
.Cm @exec ,
|
||||
and
|
||||
.Cm @unexec
|
||||
directives, and/or use the
|
||||
.Xr pkg_info 1
|
||||
command to examine the installed package control files.
|
||||
.Ef
|
||||
|
||||
.Sh OPTIONS
|
||||
The following command line options are supported.
|
||||
.TP
|
||||
.B \-v
|
||||
.Bl -tag -width indent
|
||||
.It Ar pkg-name ...
|
||||
The named packages are deinstalled.
|
||||
.It Fl v
|
||||
Turns on verbose output.
|
||||
.B "Optional."
|
||||
.TP
|
||||
.B \-D
|
||||
If an de-installation script exists for a given package, do not execute it.
|
||||
.B "Optional."
|
||||
.TP
|
||||
.B \-n
|
||||
Don't actually de-install a package, just report the steps that
|
||||
would be taken if it was.
|
||||
.B "Optional."
|
||||
.TP
|
||||
.BI "\-p\ " prefix
|
||||
.Em "Optional."
|
||||
.It Fl D
|
||||
If a deinstallation script exists for a given package, do not execute it.
|
||||
.Em "Optional."
|
||||
.It Fl n
|
||||
Don't actually deinstall a package, just report the steps that
|
||||
would be taken if it were.
|
||||
.Em "Optional."
|
||||
.It Fl p Ar prefix
|
||||
Sets
|
||||
.I prefix
|
||||
.Ar prefix
|
||||
as the directory in which to delete files from any installed packages
|
||||
which do not explicitly set theirs.
|
||||
.B "Optional."
|
||||
.PP
|
||||
.SH "TECHNICAL DETAILS"
|
||||
.B
|
||||
pkg_delete
|
||||
does pretty much what it says. It looks for a package in /var/db/pkg
|
||||
and sets about deleting the files that make up the package and, finally,
|
||||
the record of the package itself.
|
||||
.PP
|
||||
which do not explicitly set theirs. For most packages, the prefix will
|
||||
be set automatically to the installed location by
|
||||
.Xr pkg_add 8 .
|
||||
.Em "Optional."
|
||||
.It Fl d
|
||||
Remove empty directories created by file cleanup. By default, only
|
||||
files/directories explicitly listed in a package's contents (either as
|
||||
normal files/directories or with the
|
||||
.Cm @dirrm
|
||||
directive) will be removed at deinstallation time. This option tells
|
||||
.Nm
|
||||
to also remove any directories that were emptied as a result of removing
|
||||
the package.
|
||||
.Em "Optional."
|
||||
.It Fl f
|
||||
Force removal of the package, even if a dependency is recorded or the
|
||||
deinstall or require script fails.
|
||||
.Em "Optional."
|
||||
.El
|
||||
|
||||
.Pp
|
||||
.Sh TECHNICAL DETAILS
|
||||
.Nm
|
||||
does pretty much what it says. It examines installed package records in
|
||||
.Pa /var/db/pkg/<pkg-name> ,
|
||||
deletes the package contents, and finally removes the package records.
|
||||
.Pp
|
||||
If a package is required by other installed packages,
|
||||
.Nm
|
||||
will list those dependent packages and refuse to delete the package
|
||||
(unless the
|
||||
.Fl f
|
||||
option is given).
|
||||
.Pp
|
||||
If the package contains a
|
||||
.B require
|
||||
.Ar require
|
||||
file (see
|
||||
.B pkg_create
|
||||
), then this is executed first with the flags
|
||||
.PP
|
||||
.B <script>
|
||||
.I pkg-name DEINSTALL
|
||||
.PP
|
||||
to see whether or not de-installation should continue (a non-zero exit
|
||||
status means no).
|
||||
.PP
|
||||
.Xr pkg_create 8 ),
|
||||
then this is executed first as
|
||||
.Bd -filled -offset indent -compact
|
||||
.Cm require
|
||||
.Ar <pkg-name>
|
||||
.Ar DEINSTALL
|
||||
.Ed
|
||||
(where
|
||||
.Ar pkg-name
|
||||
is the name of the package in question and
|
||||
.I DEINSTALL
|
||||
is a keyword denoting that this is a deinstallation)
|
||||
to see whether or not deinstallation should continue. A non-zero exit
|
||||
status means no, unless the
|
||||
.Fl f
|
||||
option is specified.
|
||||
.Pp
|
||||
If a
|
||||
.B de-install
|
||||
.Cm deinstall
|
||||
script exists for the package, it is executed before any files are removed.
|
||||
It is this script's responsibility to clean up any additional messy details
|
||||
around the package's installation, since all
|
||||
.B pkg_delete
|
||||
.Nm
|
||||
knows how to do is delete the files created in the original distribution.
|
||||
The
|
||||
.B de-install
|
||||
script is called with the flags
|
||||
.PP
|
||||
.B <script>
|
||||
.I pkg-name DEINSTALL
|
||||
.PP
|
||||
Where
|
||||
.I pkg-name
|
||||
is the name of the package in question and
|
||||
.I DEINSTALL
|
||||
is a keyword denoting that this is a deinstallation. Passing the keyword
|
||||
.Nm deinstall
|
||||
script is called as:
|
||||
.Bd -filled -offset indent -compact
|
||||
.Cm deinstall
|
||||
.Ar <pkg-name>
|
||||
.Ar DEINSTALL
|
||||
.Ed
|
||||
Passing the keyword
|
||||
.Ar DEINSTALL
|
||||
lets you potentially write only one program/script that handles all
|
||||
aspects of installation and deletion.
|
||||
.PP
|
||||
.Pp
|
||||
All scripts are called with the environment variable
|
||||
.B PKG_PREFIX
|
||||
.Ev PKG_PREFIX
|
||||
set to the installation prefix (see the
|
||||
.B -p
|
||||
.Fl p
|
||||
option above). This allows a package author to write a script
|
||||
that reliably performs some action on the directory where the package
|
||||
is installed, even if the user might have changed it by
|
||||
.B -p
|
||||
when
|
||||
.B pkg_add
|
||||
is installed, even if the user might have changed it by specifying the
|
||||
.Fl p
|
||||
option when running
|
||||
.Nm
|
||||
or
|
||||
.B pkg_delete
|
||||
is run.
|
||||
.PP
|
||||
.SH BUGS
|
||||
.Cm pkg_add .
|
||||
.Sh SEE ALSO
|
||||
.Xr pkg_info 1 ,
|
||||
.Xr mktemp 3 ,
|
||||
.Xr mtree 8 ,
|
||||
.Xr pkg_add 8 ,
|
||||
.Xr pkg_create 8 .
|
||||
.Sh AUTHORS
|
||||
.Bl -tag -width indent -compact
|
||||
.It "Jordan Hubbard"
|
||||
most of the work
|
||||
.It "John Kohl"
|
||||
refined it for NetBSD
|
||||
.El
|
||||
.Sh BUGS
|
||||
Sure to be some.
|
||||
.SH "SEE ALSO"
|
||||
.BR pkg_create "(" 1 "),"
|
||||
.BR pkg_info "(" 1 "),"
|
||||
.BR pkg_add "(" 1 "),"
|
||||
.SH AUTHORS
|
||||
Jordan Hubbard
|
||||
|
||||
|
@ -120,9 +120,9 @@ in
|
||||
.Sh SEE ALSO
|
||||
.Xr mktemp 3 ,
|
||||
.Xr mtree 8 ,
|
||||
.Xr pkg_add 1 ,
|
||||
.Xr pkg_create 1 ,
|
||||
.Xr pkg_delete 1 .
|
||||
.Xr pkg_add 8 ,
|
||||
.Xr pkg_create 8 ,
|
||||
.Xr pkg_delete 8 .
|
||||
.Sh AUTHORS
|
||||
.Bl -tag -width indent -compact
|
||||
.It "Jordan Hubbard"
|
||||
|
@ -2,6 +2,7 @@ LIB= install
|
||||
SRCS= file.c msg.c plist.c str.c exec.c global.c pen.c
|
||||
CFLAGS+= ${DEBUG}
|
||||
NOPROFILE= yes
|
||||
NOPIC= yes
|
||||
|
||||
install:
|
||||
@echo -n
|
||||
|
Loading…
Reference in New Issue
Block a user