PKGUTIL(1) User Contributed Perl Documentation PKGUTIL(1)NAMEpkgutil - install Solaris packages the easy way
SYNOPSISpkgutil [option]... [package]...
DESCRIPTION
Pkgutil, written in Perl and licensed under GPL, is a tool to make
installation of packages in Solaris easier.
It handles package dependencies so all required packages are installed
before the desired package automatically.
A catalog is used to make this possible. The format is:
common_name version package_name file_name md5_hash pkg_size dependencies category
Example:
bind 9.4.2,REV=2008.07.09_rev=p1 CSWbind bind-9.4.2,REV=2008.07.09_rev=p1-SunOS5.8-sparc-CSW.pkg.gz f68df57fcf54bfd37304b79d6f7eeacc 2954112 CSWcommon|CSWosslrt net
In the example CSWbind has two dependencies separated by a pipe.
Multiple categories can also be separated by pipe characters.
OPTIONS-i, --install
Install package. Will install the specified packages with all
their dependencies. You may specify an explicit version (e.g.
amarok-1.4.8,REV=2008.02.26) if desired, otherwise the latest
version found is chosen.
-u, --upgrade
Upgrade package. A special argument is "all" which will upgrade
all installed packages if possible, no argument is the same as
"all". If one or more packages are given as arguments only those
will be upgraded.
-r, --remove
Remove package. This will remove a package including all
dependencies that are not in use by other packages.
Note that this feature is experimental. Use with caution.
-d, --download
Download only. Same as install but stops after downloading the
packages.
-U, --catalog
Update catalog.
-a, --available
Show available packages.
--describe
Describe available packages.
-c, --compare
Compare installed packages to current.
-C, --compare-diff
Compare installed packages to current, show only different
versions.
-A, --compare-avail
Compare available packages to those installed.
-e, --email=address
Send e-mail with available updates. E-mail address as argument.
Don't use with other options.
-t, --temp=site
Temporarily use this site for download. Must be the complete url
where to find the catalog and associated packages. May be
specified multiple times.
-s, --stream
Build a package stream for a certain architecture and OS release.
All dependencies will be included in the stream and the needed
command to install them in the correct order will be displayed.
Must be used with -d.
-T, --target=arch:rel
Specify architecture and OS release when downloading, e.g.
i386:5.9 or sparc:5.10. If not specified defaults to architecture
and release of the host running pkgutil.
-o, --output=file
File name for package stream. Used with -s. A special argument is
"-" which sends the stream to standard output, see example below.
The default name is the first package argument followed by
architecture and OS release, for example "bind.i386.5.10.pkg".
-x, --exclude=pattern
Simple pattern that will exclude matching packages. This option
can be specified multiple times.
-W, --workdir=path
Path to use for work directory. This can be used to run pkgutil as
non-root, e.g. called from a web server.
-P, --pkgdir=path
Path to use for package downloads. This can be used to run pkgutil
as non-root, e.g. called from a web server. Default is
<workdir>/package.
-R, --rootpath=path
Path to use for root_path. This is used by Solaris pkg tools like
pkgadd, pkgrm and so on. Setting this option overrides root_path
in pkgutil.conf. Default is not set.
--config=file
Use this configuration file instead of the default ones.
-y, --yes
Answer yes on all prompts. Skips prompt when multiple packares are
to be downloaded. Makes pkgrm/pkgadd operations more silent and
without prompts. Only makes sense with -i and -u.
-f, --force
Force updates regardless of version compare result, as long as
local and mirror version is not the same an update is carried out.
This can be used as a rollback from the testing mirror to current
or from current to stable for example.
-n, --nomod
No modifications are made to the system. Stops before downloading
catalog/packages. Use it to simulate if catalog needs updating or
which packages will be downloaded. Only makes sense with -i, -u
and -U.
-N, --nodeps
No dependencies, only what you specify on the command line will be
used. Useful when using pkgutil as a download tool of specific
packages or if you use the testing repo that might pull in
unwanted packages.
-D, --debug
Debug mode. Adds a lot of info about what's going on. Only use if
you're having problems you think is a bug.
--trace
Set trace mode (-v) for pkgadd/pkgrm.
-h, --help
Show this help.
-v, --version
Show pkgutil version.
-V, --syscheck
System check. This shows info about binaries and more that pkgutil
needs to support all features.
-l, --list
List installed packages.
-L, --listfile
List files in packages. Works on both installed packages as well
as on (uncompressed) package files. You can even mix them on the
command line.
-F, --findfile
Find files in installed packages.
--deptree=depth
Display dependency tree. Depth is the number of levels to show,
minumum is 1.
--extract
Will fetch and extract package content. Must be used with -d.
--single
Single package check. This is much faster than checking all
installed packages, note that using something like "-c foo" still
checks all packages, it just filters the output to only show lines
containing foo. Must be used with -c.
-p, --param=opt:val
Override configuration option. All configuration options in
pkgutil.conf can be overridden except the mirror option (use -t
for that). This can be useful if you temporarily want to disable
gpg checks for example.
--parse
Machine parsable output, no headers and all columns are separated
by one tab. Use this together with scripts to get a reliable
output format that is simpler to parse.
--cleanup
Clean up obsolete packages. For example a renamed package that is
not needed any more.
--catinfo
Display information about the catalogs used, e.g. number of
packages and local path.
EXAMPLES
Example 1
"# pkgutil-i CSWbind"
Will install CSWbind with all required dependencies.
Example 2
"# pkgutil-e nobody@foo.bar"
Will run silently and send an e-mail (with mailx) to the given address
if there's updated packages available. Run it from crontab once weekly.
Example 3
"# pkgutil-y -o - -s bind | gzip > bind.pkg.gz"
Will send a package stream including all dependencies needed for
CSWbind to standard output which is piped to gzip. With "-o -" the
normal output is sent to standard error and "-y" is used to skip the
confirmation prompt.
Example 4
"# pkgutil-T i386:5.10 -s bind"
Will make a package stream including all dependencies needed for
CSWbind. The package stream will contain packages for the i386
architecture and Solaris 10 regardless of host used to run pkgutil.
CONFIGURATION
Pkgutil uses a configuration file, pkgutil.conf, that contains a few
important settings. No modifications are mandatory though since pkgutil
will happily run with the defaults.
There's a configuration file in /opt/csw/etc/pkgutil.conf. The only
thing you normally need to change there is the mirror location. If you
have a pkgutil.conf file in /etc/opt/csw it will override the one in
/opt/csw/etc on a setting-by-setting basis. If no pkgutil.conf is found
in either of those two locations defaults are used.
The settings that can be used are:
"catalog_not_cached"
Tells your proxy server to disable caching during fetching of the
catalog and descriptions. Default is true.
"catalog_update"
Number of days between automatic catalog updates. Special cases are -1
if you want to disable automatic updates and 0 if you always want to
update the catalog. Default is 14.
"deptree_filter_common"
Filter out CSWcommon from --deptree output. Useful since almost every
package depends on CSWcommon, setting this option to true reduces the
number of lines a lot without affecting the actual information much.
Default is false.
"exclude_pattern"
Space separated list of simple patterns that will exclude matching
packages when updating or installing. If you, e.g., never want cups
related packages updated accidentally you can add the string cups here,
this will exclude all package names that contain that string. Default
is blank.
"gpg_homedir"
The path to the gpg directory (instead of ~/.gnupg or /var/opt/csw/pkgi
if CSWpki is installed) when verifying the catalogs integrity.
"maxpkglist"
During dependency calculation the recursive algorithm needs to be
protected against cyclic dependencies in the catalog (packages that
list each other as dependencies) or pkgutil will not stop until memory
is exhausted. This sets the maximum number of recursions before pkgutil
stops.
"mirror"
This is the mirror that is used for downloading the catalog and
packages. Try setting it to your nearest mirror to improve download
speed. This option may be specified multiple times.
It also supports (in an experimental way) the file:// protocol for
local/NFS mirrors. Example: "mirror=file:///absolute/path/to/files"
"noncsw"
Enable (default is disable) support for non-CSW prefixed packages.
Pkgutil also uses a file to configure pkgadd when the yes (-y) option
is used. This file is located in /var/opt/csw/pkgutil and is called
admin. It's by default set up to fully automate installations but if
you change something in this file it will be preserved during upgrades
of pkgutil. Read more about the admin file with "man -s4 admin".
"pkgaddopts"
Send options to pkgadd, one example is -G that will only install the
packages in the global zone for Solaris 10. A useful setting is -S,
that will not display the license during install.
"pkgliststyle"
Style of package list when installing/upgrading packages. 0 is the one
used since the first version of pkgutil, it's space efficient but less
readable. 1 is the one introduced in v1.7, it's one package per line
which is easier to read. 2 is the same as 1 but also displays which
distribution a package comes from, e.g. unstable or stable.
"pkgrmopts"
Send options to pkgrm, one example is "-O nozones" that will only
deinstall the packages in the global zone for Solaris 10.
"root_path"
Set alternate root path (-R with pkg commands). Default is /.
"show_current"
Show the current list of packages or not. You can choose to not show
the list of current packages to get less output when doing operations.
Default is true.
"stop_on_hook_soft_error"
This option determines whether or not execution will be halted if a
hook returns 2 as its exit code. Execution is always stopped if a hook
returns 1. Set this to true to enable it.
"use_gpg" "use_md5"
These two can enable (default is disabled for both) checking the
catalogs integrity (GPG) and that each downloaded file is unchanged
from the published one (MD5). To use GPG you need CSWgnupg installed.
MD5 is supported by default in Solaris 10 and on Solaris 8 and 9 if you
have CSWperl installed and have /opt/csw/bin first in your path. You
can also install CSWcoreutils to get MD5 support.
"wgetopts"
Send options to wget, for example to show more or less information
during downloads.
PKGASK RESPONSE FILES
Pkgutil supports pkgask response files and will use them if you provide
them. Create a pkgask directory in your work directory (normally
/var/opt/csw/pkgutil) and put your response files there.
SEE ALSO
http://pkgutil.net
http://sourceforge.net/projects/pkgutil
TODO
Add unit testing.
AUTHOR
Peter Bonivart <bonivart@opencsw.org>
CREDITS
Mark Bannister
Joe Baro
Maciej Blizinski
Dennis Clarke
Ihsan Dogan
David Everly
Neil Houston
Don Jackson
Sebastian Kayser
Trygve Laugstol
James Lee
Juraj Lutter
Dagobert Michelsen
Yann Rouillard
Remko de Vrijer
Ben Walton
Derek Whayman
For more details, see the readme file.
COPYRIGHT AND DISCLAIMER
Copyright (C) 2008-2012 Peter Bonivart. This program is free software;
you can redistribute it and/or modify it under the terms of the GNU
General Public License as published by the Free Software Foundation;
either version 2 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
perl v5.10.1 2012-08-15 PKGUTIL(1)