58c9a361c6
Bump PKGREVISION to 1.
374 lines
9.1 KiB
Groff
374 lines
9.1 KiB
Groff
.\" $NetBSD: pkg_chk.8,v 1.29 2011/01/13 17:07:01 jmmv Exp $
|
|
.\"
|
|
.\" Copyright (c) 2001 by David Brownlee (abs@NetBSD.org)
|
|
.\" Absolutely no warranty.
|
|
.\"
|
|
.Dd May 2, 2008
|
|
.Dt PKG_CHK 8
|
|
.Sh NAME
|
|
.Nm pkg_chk
|
|
.Nd check, and optionally update, installed packages
|
|
.Sh SYNOPSIS
|
|
.Nm
|
|
.Op Fl aBbcfhiklNnpqrsuv
|
|
.Op Fl C Ar conf
|
|
.Op Fl D Ar tags
|
|
.Op Fl L Ar file
|
|
.Op Fl P Ar path
|
|
.Op Fl U Ar tags
|
|
.Sh DESCRIPTION
|
|
.Nm
|
|
verifies that the versions of installed packages matches those in
|
|
pkgsrc, optionally adding missing or updating mismatched packages.
|
|
.Pp
|
|
It can verify all installed packages, or check against a set of packages
|
|
based on the hostname, architecture, and other characteristics.
|
|
.Pp
|
|
When updating packages that depend on each other
|
|
.Nm
|
|
will skip dependent packages to reduce unnecessary rebuilding.
|
|
.Ss Options
|
|
.Bl -tag -width xxxxxxxx
|
|
.It Fl a
|
|
Automatically add any missing packages.
|
|
If a binary package exists in
|
|
.Pa ${PACKAGES}
|
|
it will be used in preference to building from source, unless the
|
|
.Fl b
|
|
or
|
|
.Fl s
|
|
options are given.
|
|
.It Fl B
|
|
Include the "Build version" (see option
|
|
.Fl b
|
|
.Xr pkg_info 1 )
|
|
of packages when determining if a package is up to date.
|
|
.It Fl b
|
|
Use binary packages.
|
|
If
|
|
.Fl s
|
|
is not set this allows
|
|
.Nm
|
|
to run without
|
|
.Ev PKGSRCDIR .
|
|
.It Fl C Ar conf
|
|
Use the
|
|
.Pa pkgchk.conf
|
|
file
|
|
.Sq Ar conf .
|
|
.It Fl D Ar tags
|
|
Add the comma separated list of tags to those checked when parsing
|
|
.Pa pkgchk.conf .
|
|
Also includes
|
|
.Ev PKGCHK_TAGS .
|
|
.It Fl f
|
|
Fetch all missing/mismatched packages found.
|
|
Can be used with
|
|
.Fl a
|
|
or
|
|
.Fl u
|
|
to perform the fetch before any building.
|
|
.It Fl g
|
|
Generate an initial
|
|
.Pa pkgchk.conf
|
|
file based upon the packages installed on the host machine.
|
|
.It Fl h
|
|
Brief help.
|
|
.It Fl k
|
|
Continue with further packages if errors are encountered.
|
|
.It Fl L Ar file
|
|
Redirect the output for all commands run into the logfile
|
|
.Pa file .
|
|
Should be specified as a full pathname.
|
|
On any error the tail end of the logfile will be displayed.
|
|
.It Fl l
|
|
List the filename for all binary packages (including best dependencies) based
|
|
on
|
|
.Pa pkgchk.conf .
|
|
Will abort if a binary package is missing.
|
|
This can be used (in conjunction with
|
|
.Fl U
|
|
and
|
|
.Fl D )
|
|
to determine what
|
|
packages would need to be copied to a remote machine to ensure it
|
|
was completely up to date.
|
|
The list is sorted so that dependencies
|
|
always come before packages which depend upon them.
|
|
.It Fl N
|
|
For each installed package, look if there is a newer version
|
|
noted in
|
|
.Pa ${PKGSRCDIR}/doc/TODO .
|
|
Good for finding packages to update.
|
|
.It Fl n
|
|
Display actions that would be taken, but do not change anything.
|
|
.It Fl P Ar path
|
|
Set the path to the binary packages.
|
|
Defaults to
|
|
.Ev PACKAGES
|
|
if
|
|
.Ev PKGSRCDIR
|
|
is available, or
|
|
.Dq Pa \&.
|
|
otherwise.
|
|
.It Fl p
|
|
Print list of package directories that will be checked, then exit.
|
|
.It Fl q
|
|
Do not display actions or take any action; only list information
|
|
about package version differences.
|
|
Useful for options that list information about package differences, such as
|
|
.Fl a
|
|
or
|
|
.Fl u .
|
|
.It Fl r
|
|
Recursively delete any mismatched packages found.
|
|
Use with care, this does not record which packages were installed
|
|
for later update.
|
|
.It Fl s
|
|
Building missing packages from source.
|
|
If UPDATE_TARGET=package is set in
|
|
.Pa /etc/mk.conf ,
|
|
then
|
|
.Nm
|
|
will automatically generate binary packages for later reuse.
|
|
.It Fl U Ar tags
|
|
Remove the comma separated list of tags from those checked when
|
|
parsing
|
|
.Pa pkgchk.conf .
|
|
Also includes
|
|
.Ev PKGCHK_NOTAGS .
|
|
Package directories can also be skipped by listing them under
|
|
.Fl U .
|
|
Passing
|
|
.Sq *
|
|
to
|
|
.Fl U
|
|
will result in all default tags being unset
|
|
.It Fl u
|
|
Automatically update any installed but out of date packages.
|
|
If a binary package exists in
|
|
.Ev PACKAGES
|
|
it will be used in preference to building from source, unless the
|
|
.Fl b
|
|
or
|
|
.Fl s
|
|
options are given.
|
|
.Pp
|
|
Note: If the update fails (particularly when building from source), the system
|
|
will be left with missing packages.
|
|
Once the error has been fixed, a second run will resume the update.
|
|
.It Fl v
|
|
Verbose - list the tags set when checking
|
|
.Pa pkgchk.conf ,
|
|
and all packages checked.
|
|
.El
|
|
.Ss Deprecated Options
|
|
.Bl -tag -width xxxxxxxx
|
|
.It Fl c
|
|
Check versions of packages specified in
|
|
.Pa pkgchk.conf .
|
|
This is a synonym for
|
|
.Nm
|
|
.Fl a q ,
|
|
and will be removed in a future version.
|
|
.It Fl i
|
|
Check versions of installed packages, ignoring
|
|
.Pa pkgchk.conf .
|
|
This is a synonym for
|
|
.Fl u q ,
|
|
and will be removed in a future version.
|
|
.El
|
|
.Sh FILE FORMAT
|
|
Anything after a
|
|
.Sq #
|
|
on a line is considered a comment.
|
|
.Pp
|
|
Each line in
|
|
.Pa pkgchk.conf
|
|
can either define a new tag or a package directory
|
|
(such as sysutils/skill), in each case followed by a list of tags.
|
|
.Ss New tag groups
|
|
Lines that define a new tag can be used to group tags to avoid
|
|
repeating the same set of tags for multiple packages.
|
|
For example:
|
|
.Dl mailserver \= tll gta tycoon jeeves iris
|
|
would cause the mailserver tag to be set for any of the listed hosts.
|
|
Note that the tags after the
|
|
.Sq =
|
|
are parsed with the same set of tag
|
|
evaluation rules as those after package definitions (see later).
|
|
.Ss Package definition lines
|
|
Package directory lines are used to determine which packages are to be
|
|
installed, checking the tags against the current defined set.
|
|
.Ss Tag evaluation
|
|
Tags on package directory are checked against the current machine's set:
|
|
.Bl -bullet
|
|
.It
|
|
If a matched tag starts with a hyphen
|
|
.Sq - ,
|
|
the package is always excluded.
|
|
.It
|
|
Otherwise if any tags match the package will be included.
|
|
.It
|
|
A line without any tags matches all machines.
|
|
.It
|
|
An asterisk
|
|
.Sq *
|
|
matches any tag.
|
|
.It
|
|
If a tag starts with an
|
|
.Sq /
|
|
then it is checked for as a readable filename.
|
|
.It
|
|
Tags cannot contain a hyphen
|
|
.Sq -
|
|
or plus
|
|
.Sq + .
|
|
.It
|
|
Tags separated by spaces are treated as
|
|
.Dq or .
|
|
.Dq taga tagb
|
|
means if
|
|
.Em taga
|
|
or
|
|
.Em tagb
|
|
match the current machine.
|
|
.It
|
|
Tags separated by a plus are treated as
|
|
.Dq and .
|
|
.Dq taga+tagb
|
|
means if
|
|
.Em taga
|
|
and
|
|
.Em tagb
|
|
match the current machine.
|
|
.El
|
|
.Pp
|
|
The default set of tags used to determine which packages to match
|
|
in
|
|
.Pa pkgchk.conf
|
|
are equivalent to the output of the following with
|
|
any spaces converted to hyphens (-): hostname -s, hostname, uname
|
|
-srm, uname -sr, uname -sm, uname -s, uname -r, uname -m.
|
|
If
|
|
.Pa /usr/X11R6/lib/libX11.so
|
|
or
|
|
.Pa /usr/X11R6/lib/libX11.a
|
|
is present,
|
|
.Em x11
|
|
is added to the list of tags.
|
|
Tags should not contain the - or + characters.
|
|
To see tags for the current machine, run
|
|
.Nm
|
|
with the
|
|
.Fl v
|
|
option.
|
|
.Sh ENVIRONMENT
|
|
.Nm
|
|
uses the following environment variables.
|
|
.Bl -tag -width xxxx
|
|
.It Ev MAKECONF
|
|
Path to
|
|
.Pa mk.conf .
|
|
Defaults to
|
|
.Pa @MAKECONF@ , @PREFIX@/etc/mk.conf ,
|
|
or
|
|
.Pa /etc/mk.conf .
|
|
.It Ev PKGSRCDIR
|
|
Base of pkgsrc tree.
|
|
If not set in the environment, then this variable is read from
|
|
.Pa ${MAKECONF} .
|
|
If it is still not set, and if the current working directory
|
|
appears to be inside a pkgsrc tree, then this variable
|
|
is set to the base of that pkgsrc tree.
|
|
Finally, if
|
|
.Pa /usr/pkgsrc
|
|
appears to contain a pkgsrc tree, then that is used as a last resort.
|
|
.It Ev PKG_DBDIR
|
|
pkgsrc database directory.
|
|
If not set in environment then read from
|
|
.Pa ${MAKECONF} .
|
|
Defaults to
|
|
.Pa @PKG_DBDIR@ .
|
|
.It Ev PACKAGES
|
|
Location of binary packages.
|
|
If not set in environment then read from
|
|
.Pa /etc/mk.conf .
|
|
Defaults to
|
|
.Pa ${PKGSRCDIR}/packages .
|
|
.Pp
|
|
Unless in a completely homogeneous environment (every machine running
|
|
exactly the same OS version and architecture) setting
|
|
.Ev ${PACKAGES}
|
|
in
|
|
.Pa /etc/mk.conf
|
|
to a value such as
|
|
.Bd -literal
|
|
${PKGSRCDIR}/packages/${LOWER_OPSYS}-${OS_VERSION}-${MACHINE_ARCH}
|
|
.Ed
|
|
.Pp
|
|
is strongly recommended.
|
|
If
|
|
.Em cpuflags
|
|
(devel/cpuflags) is being used to optimally target individual CPU types,
|
|
then
|
|
.Ev ${CPU_DIR}
|
|
should be appended to
|
|
.Ev ${PACKAGES} .
|
|
.It Ev PKGCHK_CONF
|
|
Pathname to pkg_chk configuration file.
|
|
If not set in environment then read from
|
|
.Pa /etc/mk.conf .
|
|
Defaults to
|
|
.Pa ${PKGSRCDIR}/pkgchk.conf .
|
|
.It Ev PKGCHK_UPDATE_CONF
|
|
Pathname to temporary list of installed packages used when updating.
|
|
If not set in environment then read from
|
|
.Pa /etc/mk.conf .
|
|
Defaults to
|
|
.Pa ${PKGSRCDIR}/pkgchk_update-$(hostname).conf .
|
|
Note, if pkgsrc is being
|
|
shared across multiple machines which may be updating at the same time then
|
|
it is important this file does not overlap between machines.
|
|
.It Ev PKGCHK_TAGS
|
|
Additional tags to add when parsing
|
|
.Pa pkgchk.conf .
|
|
.It Ev PKGCHK_NOTAGS
|
|
Additional tags to unset when parsing
|
|
.Pa pkgchk.conf .
|
|
.El
|
|
.Sh EXAMPLES
|
|
Sample
|
|
.Pa pkgchk.conf
|
|
file:
|
|
.Bd -literal
|
|
|
|
mailserver = tll gta tycoon jeeves iris
|
|
|
|
# Install before others
|
|
devel/cpuflags
|
|
pkgtools/pkg_chk
|
|
|
|
# Mail related
|
|
mail/exim *
|
|
mail/spamassassin mailserver
|
|
mail/cyrus-imapd mailserver
|
|
mail/procmail mailserver bobhost
|
|
|
|
shells/standalone-tcsh *
|
|
wm/pwm /etc/X11/XF86Config
|
|
misc/setiathome i386
|
|
print/acroread /etc/X11/XF86Config+i386
|
|
www/communicator x11+sparc x11+sparc64
|
|
www/navigator x11+i386
|
|
x11/xlockmore x11 -wopr
|
|
|
|
.Ed
|
|
.Sh AUTHORS
|
|
.An David Brownlee
|
|
.Aq abs@NetBSD.org ,
|
|
plus much from Stoned Elipot.
|
|
.Sh BUGS
|
|
When used against binary packages,
|
|
.Nm
|
|
does not handle the directory containing multiple versions of the same package.
|