.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.14 .\" .\" Standard preamble: .\" ======================================================================== .de Sh \" Subsection heading .br .if t .Sp .ne 5 .PP \fB\\$1\fR .PP .. .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. | will give a .\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to .\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C' .\" expand to `' in nroff, nothing in troff, for use with C<>. .tr \(*W-|\(bv\*(Tr .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' 'br\} .\" .\" If the F register is turned on, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . nr % 0 . rr F .\} .\" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .hy 0 .if n .na .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "PCA 8" .TH PCA 8 "2013-05-02" "PCA 20130502-01" "Patch Check Advanced" .SH "NAME" PCA \- analyze, download and install patches for Oracle Solaris .SH "SYNOPSIS" .IX Header "SYNOPSIS" pca [\s-1OPTION\s0] .. [\s-1OPERAND\s0] .. .SH "DESCRIPTION" .IX Header "DESCRIPTION" \&\s-1PCA\s0 is a perl script which generates lists of installed and missing patches for Oracle Solaris systems and optionally downloads and installs patches. By default, if run without any option or operand, \s-1PCA\s0 shows a list of all patches which are not installed in their most recent revision. .PP The output of the pkginfo, showrev and uname commands is used to gather information about the system. Oracle offers a patch cross-reference file called patchdiag.xref which contains information about all available patches. This file is downloaded by \s-1PCA\s0 automatically to /var/tmp/ and kept up\-to\-date. If the file exists and is not writable, \s-1PCA\s0 uses it and won't try to update it. .SH "SAMPLE OUTPUT" .IX Header "SAMPLE OUTPUT" Here's some sample output from \fIpca \-l all\fR, which shows a list of all installed and missing patches: .PP .Vb 3 \& Using /var/tmp/patchdiag.xref from Feb/29/04 \& Host: myhost (SunOS 5.9/Generic_117171-09/sparc/sun4u) \& List: all (7/2182) .Ve .PP .Vb 9 \& Patch IR CR RSB Age Synopsis \& ------ -- - -- --- --- -------------------------------------------------- \& 112785 42 < 43 RS- 18 X11 6.6.1: Xsun patch \& 112787 01 = 01 --- 999 X11 6.6.1: twm patch \& 112807 10 = 10 RS- 9 CDE 1.5: dtlogin patch \& 113039 -- < 06 --- 76 SAN 4.4.1: Sun StorEdge Traffic Manager patch \& 113040 -- < 08 R-- 77 SAN 4.4.1: fctl/fp/fcp driver patch \& 113477 02 > -- --- 999 NOT FOUND IN CROSS REFERENCE FILE! \& 117114 -- < 02 --- 4 CDE 1.5: sdtwebclient patch .Ve .PP The header includes some general information about the patchdiag.xref file, the host (\fIHost:\fR) and the listed patches (\fIList:\fR). The numbers in parantheses are the number of listed patches and the sum of their ages in days; when listing missing patches, this is a rough indicator of the current patch state. .PP The first column (\fIPatch\fR) contains the patch number, followed by the installed revision (\fI\s-1IR\s0\fR) and the current revision (\fI\s-1CR\s0\fR), with one of <, >, or = between them, which tells whether the installed patch revision is lower, equal or higher than the current revision of the patch. The \fI\s-1RSB\s0\fR column lists the Recommended/Security/Bad flag of the patch. \fIAge\fR shows the number of days since the patch was released, and \&\fISynopsis\fR shows a short description of the patch. .PP On this system, revision 42 of patch 112785 is installed, but a newer revision (43) is available. This patch is marked Recommended/Security. Patch 112787 is installed in revision 01, which is the most recent revision of the patch. 112807 is marked Recommended/Security, and it's up\-to\-date. .PP Patches 113039, 113040 and 117114 are not installed at all, and 113040 is marked Recommended. .PP 113477 is installed, but not listed in the cross-reference file. New Solaris update releases often have patches pre-installed which are not yet listed in patchdiag.xref. .PP Often one patch requires other patches to be installed before it can be installed. \s-1PCA\s0 resolves these dependencies, and lists patches in their correct order. This can be seen in the patch list when a greater patch number is shown before a lower one, or when a patch which is not marked R/S is shown on the list of missing R/S patches. .SH "OPTIONS" .IX Header "OPTIONS" .IP "\-l, \-\-list" 4 .IX Item "-l, --list" List patches. See \s-1OPERANDS\s0 on how to specify which patches are listed. .IP "\-L, \-\-listhtml" 4 .IX Item "-L, --listhtml" Like \fI\-l\fR, but generates output in \s-1HTML\s0 format, including links to patch READMEs and downloads. If \fIpatchurl\fR is set and points at a local patch proxy, the links in \s-1HTML\s0 output will point there, too. .IP "\-d, \-\-download" 4 .IX Item "-d, --download" Download patches. See \s-1OPERANDS\s0 on how to specify which patches are downloaded. Patches are placed in the current directory or in \fIpatchdir\fR, if set. A My Oracle Support Account and a wget binary with \s-1SSL/HTTPS\s0 support are required. .IP "\-i, \-\-install" 4 .IX Item "-i, --install" Download and install patches. See \s-1OPERANDS\s0 on how to specify which patches are installed. Requires \s-1PCA\s0 to be run as root. Downloaded patches are removed after successful installation, unless \fI\-\-download\fR is used, too. .IP "\-I, \-\-pretend" 4 .IX Item "-I, --pretend" Like \fI\-i\fR, but only pretend to install patches. Can be used to find out if any of the patches require a reboot. .IP "\-r, \-\-readme" 4 .IX Item "-r, --readme" Display patch READMEs. See \s-1OPERANDS\s0 on how to specify which READMEs are displayed. The patch \s-1README\s0 is extracted from a previously downloaded patch file or downloaded directly from Oracle, which requires a My Oracle Support Account and a wget binary with \s-1SSL/HTTPS\s0 support. .IP "\-u, \-\-unzip" 4 .IX Item "-u, --unzip" Download and unzip patches. See \s-1OPERANDS\s0 on how to specify which patches are unzipped. Unzipped patch directories are placed in the current directory or in \fIpatchdir\fR, if set. Downloaded patches are removed after successful unzip operation, unless \fI\-\-download\fR is used, too. It is not necessary to unzip patches with this option before installing them. Instead, this can be used to peek into the contents of a patch zip file. .IP "\-x, \-\-getxref" 4 .IX Item "-x, --getxref" Download most recent patch cross-reference file. If the file does not exist or is older than 3 hours, \s-1PCA\s0 tries to download it on its own before anything else. .IP "\-X, \-\-xrefdir=DIR" 4 .IX Item "-X, --xrefdir=DIR" Set location of the cross-reference file. The default is \&\fI/var/tmp\fR (in proxy mode, the default is the current directory). By default, patchdiag.xref is writable for all users. If the \fIxrefown\fR option is set, or the \fIxrefdir\fR option contains \fI/home\fR, the cross reference file will be writable by the current user only. .IP "\-y, \-\-nocheckxref" 4 .IX Item "-y, --nocheckxref" Do not check for updated patch cross-reference file. Use this option to maintain a global baseline patch set. .IP "\-\-xrefown" 4 .IX Item "--xrefown" If set, patchdiag.xref will be writable for the current user only. .IP "\-\-nocache" 4 .IX Item "--nocache" If a proxy is used to access the Internet, this option advises it to not cache patchdiag.xref. Useful if the proxy can't be trusted to always return an up-to-date version of the file. .IP "\-P, \-\-patchdir=DIR" 4 .IX Item "-P, --patchdir=DIR" Set directory to which patches are downloaded. The default is the current working directory. .IP "\-a, \-\-askauth" 4 .IX Item "-a, --askauth" Deprecated. .IP "\-\-user=USER" 4 .IX Item "--user=USER" Login name for My Oracle Support Account authentication. .IP "\-\-passwd=PASS" 4 .IX Item "--passwd=PASS" Password for My Oracle Support Account authentication. .IP "\-\-supplevel" 4 .IX Item "--supplevel" Deprecated. Oracle broke the interface to query this information. .IP "\-\-patchurl=URL" 4 .IX Item "--patchurl=URL" \&\s-1PCA\s0 will download patches and READMEs from this \s-1URL\s0. Multiple URLs separated by whitespace can be specified. Any \s-1URL\s0 starting with file:/, ftp://, http:// or https://, and absolute paths can be used. The default is the special keyword \fIoracle\fR, meaning the Oracle patch server. See \s-1LOCAL\s0 \s-1PATCH\s0 \s-1SERVER\s0 for more information. .IP "\-\-xrefurl=URL" 4 .IX Item "--xrefurl=URL" \&\s-1PCA\s0 will download patchdiag.xref from this \s-1URL\s0. Multiple URLs separated by whitespace can be specified. Any \s-1URL\s0 starting with file:/, ftp://, http:// or https://, and absolute paths can be used. The default is the special keyword \fIoracle\fR, meaning the Oracle patch server. See \s-1LOCAL\s0 \s-1PATCH\s0 \s-1SERVER\s0 for more information. .IP "\-\-stop=ID" 4 .IX Item "--stop=ID" Stop after patch \s-1ID\s0. When the specified patch \s-1ID\s0 is reached during listing, downloading or installing patches all operations are stopped. The option will be ignored if the same patch \s-1ID\s0 is explicitly included in the \s-1OPERANDS\s0. .IP "\-\-ignore=WHAT" 4 .IX Item "--ignore=WHAT" Ignore certain patches. The patch will not be listed, downloaded or installed. Specify a patch \s-1ID\s0 without revision (\fI123456\fR) to ignore any revision of patch 123456. Specify \fI123456\-78\fR to ignore only revision 78 of patch 123456; newer revisions will not be ignored. Specify a search pattern like \fIJavaSE\fR to ignore patches whose synopsis matches the pattern. If an ignored patch is required by another patch, this patch might fail to install due to the missing patch dependency. .IP "\-\-rec=ID" 4 .IX Item "--rec=ID" Set Recommended flag on patch \s-1ID\s0. Useful to add single patches to the set of recommended patches. The patch will be marked with a lowercase \&\fIr\fR in \s-1PCA\s0's output. .IP "\-\-sec=ID" 4 .IX Item "--sec=ID" Set Security flag on patch \s-1ID\s0. Useful to add single patches to the set of security patches. The patch will be marked with a lowercase \&\fIs\fR in \s-1PCA\s0's output. .IP "\-p, \-\-pattern=REGEX" 4 .IX Item "-p, --pattern=REGEX" List only patches whose synopsis matches the search pattern \&\s-1REGEX\s0. This can be a simple string like \fImail\fR or a regular expression like \fI[kK]ernel\fR. If the pattern starts with a \&\fI!\fR, only patches which do not match the pattern are shown. .IP "\-n, \-\-noreboot" 4 .IX Item "-n, --noreboot" Install only patches that don't require a reboot after installation. .IP "\-\-minage=DAYS" 4 .IX Item "--minage=DAYS" List only patches which are at least \s-1DAYS\s0 old. .IP "\-\-maxage=DAYS" 4 .IX Item "--maxage=DAYS" List only patches which are at most \s-1DAYS\s0 old. .IP "\-\-nodep" 4 .IX Item "--nodep" Do not resolve patch dependencies. .IP "\-\-minimal" 4 .IX Item "--minimal" Use minimal (instead of latest) revision for recommended patches. In combination with the \fImissingr\fR patch group this can be used to check a system against the same set of patches as included in the \fIRecommended Patchset for Solaris\fR, containing the minimal revisions of all critical patches recommended to be installed proactively. In short, \*(L"pca \-\-minimal \-\-install missingr\*(R" should give the same result as installing the \fIRecommended Patchset for Solaris\fR. Use of \fI\-\-minimal\fR with any other patch group than \&\fImissingr\fR might give unexpected results. .IP "\-\-syslog=TYPE" 4 .IX Item "--syslog=TYPE" Syslog priority to log patch installs to. The default is \&\fIdaemon.notice\fR which gets logged to \fI/var/adm/messages\fR. Specify facility and severity (e.g. \fIlocal7.info\fR) or a facility only (e.g. \fIlocal7\fR, the default severity is \fInotice\fR). Use \fInone\fR to disable logging to syslog. .IP "\-k, \-\-nobackup=ID" 4 .IX Item "-k, --nobackup=ID" Do not back up files to be patched for patch \s-1ID\s0. This works by running patchadd with its \fI\-d\fR option. Patches can not be backed out if this option is used. Specify a patch \s-1ID\s0 with or without a revision or the special \s-1ID\s0 \fIall\fR to not back up files for any patch. .IP "\-B, \-\-backdir=DIR" 4 .IX Item "-B, --backdir=DIR" Saves patch backout data to \s-1DIR\s0. This works by running patchadd with its \fI\-B\fR option. .IP "\-s, \-\-safe" 4 .IX Item "-s, --safe" Safe patch installation. Checks all files for local modifications before installing a patch. A patch will not be installed if files with local modifications would be overwritten. .IP "\-G, \-\-currentzone" 4 .IX Item "-G, --currentzone" Make patchadd modify packages in the current zone only. This works by running patchadd with its \fI\-G\fR option. This option works on Solaris 10 or newer only. .IP "\-\-patchadd=FILE" 4 .IX Item "--patchadd=FILE" Path to an alternative patchadd command. .IP "\-H, \-\-noheader" 4 .IX Item "-H, --noheader" Don't display descriptive headers and other information, just one line per patch. Useful if re-using \s-1PCA\s0's output in own scripts. .IP "\-\-format=FORMAT" 4 .IX Item "--format=FORMAT" Set output format to \s-1FORMAT\s0. The default format is \&\fI%p \f(CI%i\fI \f(CI%e\fI \f(CI%c\fI \f(CI%r\fI%s%b \f(CI%a\fI \f(CI%y\fI\fR. Use \fI%p\fR for the patch number, \&\fI%i\fR for the installed revision, \fI%e\fR for information whether the installed revision is lower, equal or higher than the current revision (\fI%c\fR). Use \fI%r\fR, \fI%s\fR and \fI%b\fR for the Recommended, Security and Bad flag, \fI%a\fR for the age, \fI%d\fR for the release date, \&\fI%o\fR for \s-1OS\s0 and \fI%y\fR for the Synopsis. Use \fI%n\fR as a patch counter and \fI%t\fR for the total number of patches. Example: With the format string \fI%p\-%c \f(CI%y\fI\fR \s-1PCA\s0 shows patches in the same format as smpatch. Use of this option in combination with \&\fI\-\-listhtml\fR is unsupported. .IP "\-f, \-\-fromfiles=DIR" 4 .IX Item "-f, --fromfiles=DIR" Read uname/showrev/pkginfo output from files in the specified directory, where \s-1DIR\s0 can also be a file name prefix. See \&\s-1CREATING\s0 \s-1PATCH\s0 \s-1REPORTS\s0 \s-1FOR\s0 \s-1REMOTE\s0 \s-1MACHINES\s0 for details. .IP "\-\-dltries=NUM" 4 .IX Item "--dltries=NUM" Try downloads from Oracle's download server \s-1NUM\s0 times. The default is 1. Can be raised to reduce failed patch downloads when Oracle's patch download server is unresponsive. .IP "\-F, \-\-force" 4 .IX Item "-F, --force" Force local caching proxy to download patchdiag.xref, patches and patch READMEs from Oracle's download server, even if the file is already in the cache. Useful to download updated patch READMEs for bad patches. .IP "\-R, \-\-root=DIR" 4 .IX Item "-R, --root=DIR" Set alternative root directory. This can be useful for Live Upgrade, to analyze patches in an alternate root environment or to point \s-1PCA\s0 at the mini-root of a jumpstart install server. .IP "\-\-wget=PATH" 4 .IX Item "--wget=PATH" Path to the wget command. Specify the name of the wget binary or the directory containing the wget binary. When multiple wget binaries are found, the newest with the best protocol support is used. .IP "\-\-wgetproxy=URL" 4 .IX Item "--wgetproxy=URL" Default proxy for wget. .IP "\-\-wgetopt=OPT" 4 .IX Item "--wgetopt=OPT" Feed option \s-1OPT\s0 directly to wget as\-is. Usually only needed for debug reasons and to work around local configuration issues. Leading \&\fI\-/\-\-\fR must be included and \s-1OPT\s0 must be quoted! .IP "\-\-logger=FILE" 4 .IX Item "--logger=FILE" Path to (alternative) logger command. .IP "\-t, \-\-threads=NUM" 4 .IX Item "-t, --threads=NUM" Number of concurrent download threads. See \s-1THREADS\s0 for details. .IP "\-\-update=TYPE" 4 .IX Item "--update=TYPE" Check for available updates for \s-1PCA\s0 itself. \s-1TYPE\s0 can be \fInever\fR, \fIcheck\fR, \&\fInow\fR or \fIauto\fR. See \s-1UPDATE\s0 \s-1PCA\s0 for more information. .IP "\-\-pcaurl=URL" 4 .IX Item "--pcaurl=URL" Set the \s-1URL\s0 which is used by \fIupdate\fR to check for new versions of \s-1PCA\s0. See \s-1UPDATE\s0 \s-1PCA\s0 for more information. .IP "\-\-ssprot=PROT" 4 .IX Item "--ssprot=PROT" Deprecated. .IP "\-\-sshost=HOST" 4 .IX Item "--sshost=HOST" Deprecated. .IP "\-\-ohost=HOST" 4 .IX Item "--ohost=HOST" Use \s-1HOST\s0 as the hostname or \s-1IP\s0 address of the Oracle download server. The default is \fIgetupdates.oracle.com\fR. .IP "\-\-norootchk" 4 .IX Item "--norootchk" When using the \fIsafe\fR or the \fIinstall\fR option, root permission is required to run pkgchk or patchadd. Use this option to skip the check, e.g. when using sudo or \s-1RBAC\s0. .IP "\-\-cffile=FILE" 4 .IX Item "--cffile=FILE" Read \s-1FILE\s0 as additional configuration file. Use \fIcffile=FILE\fR in a configuration file to include \s-1FILE\s0. .IP "\-V, \-\-debug" 4 .IX Item "-V, --debug" Show debug output on stderr. This includes output generated by patchadd. When running in proxy mode, debug output will be written to the file /var/tmp/pca\-proxy\-debug.txt. .IP "\-h, \-\-help" 4 .IX Item "-h, --help" Print help on command line options. .IP "\-m, \-\-man" 4 .IX Item "-m, --man" Print manual page. This requires the Pod::Usage module. .IP "\-v, \-\-version" 4 .IX Item "-v, --version" Print version information. .PP If no option is specified, the \fI\-l\fR option to list patches is used. .SH "OPERANDS" .IX Header "OPERANDS" The operands determine which patches are listed (\fI\-l\fR), downloaded (\fI\-d\fR), installed (\fI\-i\fR) or whose READMEs are displayed (\fI\-r\fR). Multiple operands can be specified. Supported operands are \fIpatch group\fR (missing, installed, all, total, unbundled, bad), \&\fIpatch \s-1ID\s0\fR with or without revision (123456\-78 or 123456), \fIpatch file\fR (123456\-78.zip) and \&\fIfile name\fR (patchlist.txt). .PP The patch groups can be used to specify all missing patches (\fImissing\fR), all installed patches (\fIinstalled\fR), both installed and missing patches (\fIall\fR), all patches listed in patchdiag.xref (\fItotal\fR), patches not associated with a software package (\fIunbundled\fR) or installed patches which are marked Bad (\fIbad\fR). By adding \fIr\fR, \fIs\fR or \fIrs\fR to any of the patch groups, only patches from the patch group which are marked Recommended, Security or either Recommended or Security are specified. Examples are \fImissings\fR for all missing Security patches, or \&\fIallrs\fR for all Recommended/Security patches. Patch groups can be shortened by using the first letter of the patch group plus optional r/s/rs (e.g. \fIms\fR for missings or \fIars\fR for allrs). .PP Patch IDs like \fI123456\-78\fR or \fI123456\fR are used to specify single patches. If no revision (\fI\-78\fR) is specified, patch dependencies will be resolved. If the name of a patch file like \&\fI123456\-78.zip\fR is specified, it has the same effect as using \&\fI123456\-78\fR. This can be useful to install a list of already downloaded patches with \fIpca \-i *.zip\fR. .PP If a \fIfile name\fR is specified, the file is read and its contents are added to the list of operands line\-by\-line. A file can contain other file names. If the file name is equal to a valid patch group name it will not be read. .PP The patch list can be limited to patches whose synopsis line contains a search pattern by using any patch group in combination with the \&\fI\-\-pattern=REGEX\fR option. A command like \fIpca \-p mail\fR shows any missing patch containing the \fImail\fR keyword in its description. If the search pattern contains whitespace or special characters, enclose it in quotation marks: \&\fIpca \-p Studio \-l total\fR shows patches for all versions of Sun Studio. If the pattern starts with \fI!\fR, the patch list is limited to patches which do not match the pattern. .PP If no operands are specified, the \fImissing\fR operand is used. .SH "CONFIGURATION" .IX Header "CONFIGURATION" The behaviour of \s-1PCA\s0 can be configured by setting any option either in a configuration file, as an environment variable with the \fI\s-1PCA_\s0\fR prefix or on the command line. See \s-1OPTIONS\s0 for a complete list; only the long names can be used in configuration files and for environment variables. .PP At first, the configuration files are read. \s-1PCA\s0 reads \fIpca.conf\fR in the directory where \s-1PCA\s0 is installed, \fI../etc/pca.conf\fR of the directory where it is installed, \fI/etc/pca.conf\fR, \fI$HOME/.pca\fR and \fIpca.conf\fR in the current directory, in this order. In proxy mode the files \fI../etc/pca\-proxy.conf\fR, \&\fI/etc/pca\-proxy.conf\fR and \&\fIpca\-proxy.conf\fR in the current directory are read instead. Options are set by specifying \&\fIoption=value\fR in the file. Example: To set the path of the wget command, use \fIwget=/opt/bin/wget\fR. To enable debug output, use \&\fIdebug=1\fR. .PP Then, all environment variables matching \fI\s-1PCA_OPTION\s0\fR are read. Example: To set the patch download directory, set \fI\s-1PCA_PATCHDIR\s0\fR to \&\fI/some/dir/\fR. To set the \fInoheader\fR option, set \fI\s-1PCA_NOHEADER\s0\fR to \fI1\fR. .PP At last, the command line options are read. Example: To set the location of the patch xref file, use \fI\-X /tmp\fR or \fI\-\-xrefdir=/tmp\fR. To set the option for safe patch installation, use \fI\-s\fR or \fI\-\-safe\fR. .PP All boolean options (i.e. those which do not take an argument) can be negated on the command line by specifying \fI\-\-no\-option\fR to override settings from configuration files. Version 2.32 or newer of the Getopt::Long module is required. Example: If \fInoreboot=1\fR is set in \&\fIpca.conf\fR it can be overridden with \fI\-\-no\-noreboot\fR. .PP The \fIoperands\fR option can only be used in configuration files and as an environment variable. It sets the default \s-1OPERANDS\s0. .PP In a configuration file, everything after a \fI#\fR character is regarded as a comment and ignored. .SH "PATCH DOWNLOAD AND INSTALLATION" .IX Header "PATCH DOWNLOAD AND INSTALLATION" The \fI\-d\fR option downloads patches to the current directory, \fI\-i\fR downloads and installs them. The download option can be used as a regular user. The external command wget is used for the actual download. If it can't be found in the default paths, set the \fIwget\fR option to contain the path to the wget command. The install option requires \s-1PCA\s0 to be run as root. It uses \fIpatchadd\fR to install the patches. Using \fI\-I\fR instead of \fI\-i\fR pretends to install patches, but does not actually install any patch. .PP After the installation of each patch, a status line shows the current time, the time used to install the patch and the total run time. It also includes the current/total number of patches and counts for successful, skipped and failed patch installs. .PP The patches are downloaded from Oracle's patch download server. To download patches from Oracle, a My Oracle Support (\s-1MOS\s0) Account is required. For most patches a Support Contract is required, too (see \s-1SUPPORT\s0 \s-1LEVELS\s0 for more information). Set the two options \fIuser\fR and \fIpasswd\fR to contain the \s-1MOS\s0 user name and password. If unset, \s-1PCA\s0 asks for \&\s-1MOS\s0 Account data interactively. If \fIuser\fR is set, but \&\fIpasswd\fR is not, \s-1PCA\s0 will ask for the password. .PP As \s-1PCA\s0 analyzes the information in the cross-reference file to resolve patch dependencies, it lists and installs patches in the correct order. Patches for the patch installation utilities will always be installed first to avoid issues with subsequent patches. .PP For some patches, a (reconfiguration) reboot is recommended or required after installation. The /reconfigure file is created as needed and a message is shown in the summary. When the \fIinstall\fR or \fIpretend\fR option is combined with the \fInoreboot\fR option, only patches which do not require a reboot are installed. This information is contained in the patch distribution file. Therefore, even if \fInoreboot\fR is specified, the patches are downloaded anyway; only the installation is skipped. .PP \&\fIpatchadd\fR normally keeps a backup of all files it modifies. Using the \fI\-\-nobackup=ID\fR option with \s-1PCA\s0 instructs \&\fIpatchadd\fR to not keep backup copies of replaced files (see the \fI\-d\fR option in patchadd's man page). .PP Sometimes a patch re-delivers and silently overwrites files which have been modified locally. \s-1PCA\s0 tries to overcome this issue with its safe patch installation mode. Before installing a patch, \s-1PCA\s0 checks all files listed in the patch \&\s-1README\s0 for local modifications. If any modified file is in danger of being overwritten, a warning is shown and the patch is skipped. Safe mode is off by default, and can be turned on by using \fI\-s\fR or \&\fI\-\-safe\fR in combination with \fI\-i\fR (install patches) or \fI\-I\fR (pretend to install patches). You must be root to use \fI\-s\fR. Running \fIpca \-s \-I\fR is a safe way of identifying problematic patches without actually installing them. .PP In rare cases, patches modify or replace files without updating the checksum in the package database used by \s-1PCA\s0. Installing a more recent revision of the same patch will fail although no local modifications have been made to a file. Patch installation can be forced by not using the \fIsafe\fR option. .PP Running \fIpca \-si missingrs\fR on a regular basis is enough to keep the system at the recommended patch level. This is quite comfortable and works without problems in many cases. As some patches require special handling, it's recommended to read the \s-1README\s0 of every patch before installation. \s-1PCA\s0's \fI\-L\fR option for \s-1HTML\s0 output and the \&\fI\-\-readme\fR option to display patch READMEs are handy for that. .PP Sometimes installing a patch might fail because of inconsistencies in the patchdiag.xref file, the patch \s-1README\s0 and the information contained inside the patch. Often this gets fixed in a new version of patchdiag.xref or in a new revision of the patch. Either try again a few days later or take a look at the \&\fINotes\fR section on the \s-1PCA\s0 web site, where some problematic patches are listed. .SH "SUPPORT LEVELS" .IX Header "SUPPORT LEVELS" In order for a user to download a patch, the user must have a Support Level on their My Oracle Support (\s-1MOS\s0) Account that matches the Support Level on the patch. A certain type of Support Contract includes one or more Support Levels. .PP To find out which Support Levels a User and a Patch have, follow the instructions in Knowledge Article \s-1ID\s0 \fI1269292.1\fR on \s-1MOS\s0. .PP Possible Support Levels and Support Contract Coverage: .IP "\s-1OS\s0 (Operating System)" 4 .IX Item "OS (Operating System)" Solaris patches and updates. Requires \fIPremier Support for Operating Systems\fR or \&\fIPremier Support for Systems\fR. .IP "\s-1PUB\s0 (Public Patches)" 4 .IX Item "PUB (Public Patches)" Oracle Open Office/StarOffice and patch utilities. No Support Contract required. .IP "\s-1SW\s0 (Software)" 4 .IX Item "SW (Software)" Existing Oracle software and Sun middleware. Requires \fIPremier Support for Software\fR. .IP "\s-1FMW\s0 (Firmware)" 4 .IX Item "FMW (Firmware)" Firmware, drivers, bios, system controller software, \s-1ALOM/ILOM\s0, diagnostics. Requires \fIHardware Warranty\fR or \fIPremier Support for Systems\fR. .IP "\s-1VIN\s0 (Vintage Solaris)" 4 .IX Item "VIN (Vintage Solaris)" Solaris 8. Requires \fIOracle Solaris Extended Support\fR. .IP "\s-1EXS\s0 (Extended Support)" 4 .IX Item "EXS (Extended Support)" \&\s-1EOL\s0 Oracle Software. Requires \fILifetime Support\fR. .SH "LOCAL PATCH SERVER" .IX Header "LOCAL PATCH SERVER" On a local network, it might be useful to have a local patch server. There are two ways to set up a local patch server for \s-1PCA\s0, using the \&\fIpatchurl\fR and \fIxrefurl\fR options. With these options, alternative locations for patches, patch READMEs or patchdiag.xref can be specified. Multiple URLs and the special keyword \fIoracle\fR can be used to make \s-1PCA\s0 check various local or remote resources and Oracle's server. Like this, you can create patch repositories with already downloaded patches and let \s-1PCA\s0 always look there before trying to access the Oracle server. .PP Create the local patch repository by copying downloaded patch files (e.g. 123456\-78.zip), patch READMEs (e.g. \s-1README\s0.123456\-78) and/or patchdiag.xref to a directory which is available via \s-1NFS\s0 or on a local web server. Point \s-1PCA\s0 at it by setting the \fIpatchurl\fR and/or \fIxrefurl\fR options to the \s-1URL\s0 (e.g. \*(L"file:/pca/ oracle\*(R" or \*(L"http://www.my.org/patches/\*(R"). .PP The more advanced method uses \s-1PCA\s0 to work as a local caching proxy for itself. Create a directory in the document root of the local web server, and link or copy pca there under the name \fIpca\-proxy.cgi\fR. Make sure that the directory (or the directories specified with the \fIxrefdir\fR and \fIpatchdir\fR options) are owned and writable by the user under which \s-1CGI\s0 scripts run, as patches, patch READMEs and patchdiag.xref will be stored there. Verify that the web server is configured to run \s-1CGI\s0 scripts (for apache, check the ExecCGI and AddHandler options in httpd.conf). Create a pca.conf file in the same directory to specify My Oracle Support Account data. On the client, point \&\s-1PCA\s0 at the caching proxy by setting the \fIpatchurl\fR and \fIxrefurl\fR options to e.g. http://www.my.org/patches/pca\-proxy.cgi. .PP In proxy mode, if a patch or patch \s-1README\s0 exists in the local cache directory, it is delivered immediately. If it doesn't, the file is downloaded from Oracle's patch server, put into the cache, and delivered. For patchdiag.xref, \&\fIpca\-proxy.cgi\fR will always make sure that it has a recent version of this file and deliver it from its cache. .PP With a local caching proxy in place, client systems running \s-1PCA\s0 and using this proxy do not need direct access to the Internet at all. .PP Example setup of a local caching proxy on a vanilla Solaris 10 system: .PP .Vb 2 \& # mkdir /var/tmp/pca \& # chown webservd:webservd /var/tmp/pca .Ve .PP This is where patches, READMEs and patchdiag.xref will be stored by the proxy. Now put the \s-1CGI\s0 script in place and create a configuration file: .PP .Vb 11 \& # cd /var/apache2/cgi-bin \& # cp /usr/local/bin/pca pca-proxy.cgi \& # chmod 555 pca-proxy.cgi \& # cat > /etc/pca-proxy.conf \& xrefdir=/var/tmp/pca \& patchdir=/var/tmp/pca \& user=XXXXXX \& passwd=YYYYYY \& ^D \& # chown webservd:webservd /etc/pca-proxy.conf \& # chmod 600 /etc/pca-proxy.conf .Ve .PP If the apache2 server is not running yet, create \fI/etc/apache2/httpd.conf\fR and enable the server with \fIsvcadm\fR: .PP .Vb 2 \& # cp /etc/apache2/httpd.conf-example /etc/apache2/httpd.conf \& # svcadm enable svc:/network/http:apache2 .Ve .PP Test the caching proxy on a client: .PP .Vb 2 \& ./pca -X . --xrefurl=http://server.domain/cgi-bin/pca-proxy.cgi \& --patchurl=http://server.domain/cgi-bin/pca-proxy.cgi -d 126306-01 .Ve .PP The patchdiag.xref and 126301\-01.zip will be downloaded by the proxy and stored in \fI/var/tmp/pca/\fR on the server, and both files will be delivered to the client. If it doesn't work, add \fIdebug=1\fR to the pca.conf file and look at /var/tmp/pca\-proxy\-debug.txt and /var/apache2/logs/ for details. .PP When downloading large patches through the proxy, you must ensure that the web server does not kill \fIpca\-proxy.cgi\fR before it has completed the download from Oracle's patch server. Apache has a \fITimeout\fR option with a default value of 300 seconds. Raise that to 1800 seconds to avoid problems. .PP For large setups, you can build a cascade of local caching proxies by pointing one proxy at another proxy by setting \fIxrefurl\fR and \fIpatchurl\fR to point at the master proxy in the slave proxies' pca.conf. .PP As \s-1PCA\s0 uses the wget command to download patches from the patch server, make sure that any specially required option is set in \fI/etc/wgetrc\fR or \&\fI$HOME/.wgetrc\fR. Example: When running the local patch server on a \s-1HTTPS\s0 server with a self-signed certificate, \fIcheck\-certificate=off\fR should be specified in \fIwgetrc\fR on the client. .SH "UNBUNDLED PATCHES" .IX Header "UNBUNDLED PATCHES" Usually a patch is related to one or more software packages installed on a system. Apart from that, there are unbundled patches. They provide firmware updates for machines, disks, or tape drives and fixes for software which doesn't come in package format. Currently there is no way to automatically determine if such patches actually apply to a system. .PP The \fIunbundled\fR operand specifies this type of patches. At first, \fIpca \-l unbundled\fR will show a long list of patches. To reduce this list to the interesting ones, unnecessary patches can be ignored by using the \fIignore\fR option in a \s-1PCA\s0 configuration file. For patches you are absolutely not interested in, use an entry like \fIignore=123456\fR in the configuration file; this patch will never be shown again, even if a newer revision of the patch appears. Patches that are installed in their current revision should be put with this revision into the configuration file (e.g. \fIignore=123456\-78\fR). The patch will show up again when a newer revision is released. .PP Example: Patch 106121\-18 contains the most recent \s-1PROM\s0 firmware for Ultra 5/10 workstations. As it's installed on all systems, I put \&\fIignore=106121\-18\fR into the configuration file. When a new revision of the patch is released, it will show up in \fIpca \-l unbundled\fR again. Patch 118324 is the \s-1PROM\s0 firmware patch for the Sun Fire V440. As I don't have such a machine, I put \fIignore=118324\fR into the configuration file to ignore this patch completely. .PP All that \s-1PCA\s0 can do is to notify of new unbundled patches or patch revisions. It's on you to decide whether a patch is needed by checking its \s-1README\s0 file, and to install it by following the instructions in the \&\s-1README\s0. Unbundled patches cannot be installed by patchadd or \s-1PCA\s0. .SH "CREATING PATCH REPORTS FOR REMOTE MACHINES" .IX Header "CREATING PATCH REPORTS FOR REMOTE MACHINES" \&\s-1PCA\s0 can create a patch report or download patches for a system which cannot run \s-1PCA\s0 directly, like stripped-down systems without perl or an Internet connection. On such systems, run: .PP .Vb 3 \& uname -a > uname.out \& showrev -p > showrev.out \& pkginfo -x > pkginfo.out .Ve .PP On systems with a minimal core installation of Solaris, the \fIshowrev\fR command might not be available. Use \fIpatchadd \-p > showrev.out\fR instead. .PP Copy the resulting \fI*.out\fR files to a system where \s-1PCA\s0 is installed. Use the \fI\-f \s-1DIR\s0\fR or \fI\-\-fromfiles=DIR\fR option to point \s-1PCA\s0 at the location of the input files. The argument to \fI\-f\fR can be a directory or a file name prefix like \fImyhost_\fR. This allows collecting \fI*.out\fR files for multiple systems and telling \s-1PCA\s0 which ones to read. .PP If Sun Explorer is used to collect information about Sun systems, a directory containing Sun Explorer output can be used as the argument to \fI\-f\fR as well. .PP Other options can be used in combination with \fI\-f\fR. Example: \fIpca \-f . \-d missing\fR downloads all missing patches for the remote system. .SH "LIVE UPGRADE" .IX Header "LIVE UPGRADE" \&\s-1PCA\s0 can be used in combination with Live Upgrade to analyze or install patches in an inactive boot environment. Use \fIlumount\fR to mount the \&\s-1BE\s0 and \s-1PCA\s0's \fI\-\-root=DIR\fR option to set the alternative root directory: .PP .Vb 3 \& lumount BE_name \& pca --root=/.alt.BE_name --install \& luumount BE_name .Ve .PP When you're done patching, activate the new \s-1BE\s0 and reboot with \fIinit 6\fR. .PP \&\s-1PCA\s0 always installs the patch for the patch installation utilities first to avoid possible bugs in \fIpatchadd\fR. When patching an inactive \&\s-1BE\s0, this patch should be installed manually to the active \s-1BE\s0, as its patch installation utilities are used even when \fIroot=DIR\fR is set. .SH "ZONES" .IX Header "ZONES" \&\s-1PCA\s0 can be run both in the global zone or any non-global zone. Patches installed in the global zone are usually installed in all non-global zones, too. It's recommended to install patches in the global zone first, and then run \s-1PCA\s0 in all non-global zones to check for additionally needed patches. This is necessary if packages have been added to or removed from just the global or any non-global zone. .PP When \s-1PCA\s0 is run with the \fI\-G\fR option, this option is handed through to patchadd, which will install patches in the current zone only. See the man page for patchadd for further details. .SH "THREADS" .IX Header "THREADS" If \s-1PCA\s0 is run with the \fI\-\-threads=NUM\fR option, in conjunction with the download \fI\-d\fR or install \fI\-i\fR options, \s-1PCA\s0 will begin downloading multiple patches in parallel, up to \s-1NUM\s0 patches at once. Patches will still be installed one at a time, in the appropriate order. .PP The perl version used to run \s-1PCA\s0 must support threading, otherwise requests to use threading will be silently ignored. The /usr/bin/perl which comes with Solaris and perl binaries compiled with the default settings do not support threading. In that case, the output of \fI\-\-help\fR will indicate that threads have been disabled. .SH "UPDATE PCA" .IX Header "UPDATE PCA" Changes to the patch infrastructure by Oracle and problems with single patches often make updates to \s-1PCA\s0 necessary. To ease that procedure, the \fIupdate=TYPE\fR option can be used. The default is type \fInever\fR \- \s-1PCA\s0 will never check for updates. Use the \fIcheck\fR type to contact the \s-1PCA\s0 webpage and check for available updates. Using \fInow\fR will not only check, but also download and install the updated version of \s-1PCA\s0. .PP With \fIauto\fR, \s-1PCA\s0 will check for updates automatically once per day, keeping itself up to date without user intervention. Unlike \fIcheck\fR and \fInow\fR which are for interactive usage, this type is best used in a configuration file. .PP The default \s-1URL\s0 to check for updates is http://www.par.univie.ac.at/solaris/pca/stable/ (official release). It can be set with the \fIpcaurl=URL\fR option. Set it to http://www.par.univie.ac.at/solaris/pca/develop/ to check for and update to new development versions of \s-1PCA\s0. You can set \fIpcaurl\fR to point at a local \s-1URL\s0 to distribute whatever version in your local network. If set to point at a local caching proxy, the proxy will check for updates automatically, keep a local copy of the pca script in \fIpatchdir\fR and deliver it to the client. .PP Set \fIupdate=auto\fR in the configuration file for \s-1PCA\s0 in proxy mode (\fIpca\-proxy.cgi\fR) to make it keep itself up\-to\-date. .SH "JUMPSTART" .IX Header "JUMPSTART" You can use \s-1PCA\s0 to install patches in the finish script of a jumpstart install server. Perl is included in the \s-1OS\s0 image which is booted over the network for installation starting with Solaris 8. As the machine will probably not have an Internet connection during installation, you can either pre-download all necessary patches into a directory accessible via \s-1NFS\s0, or set up a local caching proxy. If you use any http or ftp url for \fIxrefurl\fR or \fIpatchurl\fR, you must put a copy of wget into the directory that contains your finish script and \s-1PCA\s0, and use the \&\fIwget\fR option to point \s-1PCA\s0 at it. .PP Set \fIpatchdir\fR and \fIxrefdir\fR (unless you use \fInocheckxref\fR) to /tmp to avoid problems with non-writable directories. As the \s-1OS\s0 which gets installed during jumpstart is mounted at /a, use the \fIroot\fR option to instruct \s-1PCA\s0 to install patches there. .SH "EXAMPLES" .IX Header "EXAMPLES" List all missing patches. This is the same as running pca without any arguments: .PP .Vb 1 \& pca -l missing .Ve .PP List all installed security patches: .PP .Vb 1 \& pca -l installeds .Ve .PP Display the \s-1README\s0 for the current revision of patch 116532: .PP .Vb 1 \& pca --readme 116532 .Ve .PP Show all installed patches which are marked Bad. You should read the patch \s-1README\s0 to find out how to handle a specific bad patch: .PP .Vb 1 \& pca -l bad .Ve .PP Download multiple explicitly specified patches, asking for My Oracle Support Account data when needed: .PP .Vb 1 \& pca -d 121308-02 122032 .Ve .PP Download and install all missing patches which do not require to reboot the system in safe mode: .PP .Vb 1 \& pca --noreboot --safe --install .Ve .PP Download all missing patches for a remote system. Output from \fIuname \-a\fR, \&\fIshowrev \-p\fR and \fIpkginfo \-x\fR has been saved to /tmp/myhost_uname.out etc. before: .PP .Vb 1 \& pca -f /tmp/myhost_ -d missing .Ve .PP Check for a new version of \s-1PCA\s0 and install it: .PP .Vb 1 \& pca --update now .Ve .PP A sample configuration file: .PP .Vb 7 \& # My Oracle Support Account \& user=myuser@mydomain.org \& passwd=secret \& # Try local patch repositories before the Oracle server \& patchurl=file:/patches http://www.my.org/patches/ oracle \& syslog=user \& safe=1 .Ve .PP A sample configuration file for a client of a \s-1PCA\s0 proxy: .PP .Vb 3 \& # Get everything from the proxy \& patchurl=http://www.my.org/patches/pca-proxy.cgi \& xrefurl=http://www.my.org/patches/pca-proxy.cgi .Ve .SH "ENVIRONMENT VARIABLES" .IX Header "ENVIRONMENT VARIABLES" All environment variables with the \fI\s-1PCA_\s0\fR prefix are evaluated as options; see \s-1CONFIGURATION\s0 for details. Furthermore, these environment variables are used by \s-1PCA:\s0 .IP "\s-1PAGER\s0" 4 .IX Item "PAGER" Path to the command which is used to display patch \s-1README\s0 files .IP "\s-1TMPDIR\s0" 4 .IX Item "TMPDIR" During patch installation, patches are extracted under this directory .SH "DOWNLOAD ERRORS" .IX Header "DOWNLOAD ERRORS" If downloads of patches, patch READMEs or the patchdiag.xref file fail, the displayed error might help to diagnose the problem: .IP "Service Error (403)" 4 .IX Item "Service Error (403)" The user/passwd combination you provided is not correct. .IP "You are not entitled to retrieve this content (403)" 4 .IX Item "You are not entitled to retrieve this content (403)" The user/passwd combination is correct, but the \s-1MOS\s0 Account does not have the Support Level required for the requested file. See \&\s-1SUPPORT\s0 \s-1LEVELS\s0 for more information. .IP "Not Found (404)" 4 .IX Item "Not Found (404)" The requested file does not exist on Oracle's patch server. .IP "Server Error, Service Unavailable, Gateway Timeout (5xx)" 4 .IX Item "Server Error, Service Unavailable, Gateway Timeout (5xx)" The Oracle patch server is in a bad state. Retry later. .SH "EXIT STATUS" .IX Header "EXIT STATUS" The following exit values are returned: .PP .Vb 1 \& 0 No error .Ve .PP .Vb 1 \& 1 Unknown error .Ve .PP .Vb 1 \& 2 Usage error .Ve .PP .Vb 1 \& 3 Reboot required to continue patch installation .Ve .PP .Vb 1 \& 4 Reboot required .Ve .PP .Vb 1 \& 5 Reboot recommended .Ve .SH "AUTHORS" .IX Header "AUTHORS" Martin Paul .PP Thanks to everybody who contributed code or provided feedback: .PP Andrew Brooks, Bruce Riddle, Damian Hole, Peter Van Eynde, Richard Whelan, Eugene MacDougal, Peter Schmitz, Fredrik Lundholm, Dan W. Early, Markus Reger, Constantijn Sikkel, Stephen P. Potter, Fletcher Cocquyt, Timothy J. Howard, Thomas Bluhm, Frank Doeschner, Loris Serena, Marion Biallowons, Ricky Chew, Martin R. Korczak, Imad Soltani, Scott Lucas, Anders Grund, Bernd Senf, Chris Zappala, Ashley Krelle, Mike Patnode, Mats Larsson, Thomas Maier\-Komor, Willi Burmeister, Stefaan A. Eeckels, Ian Collins, Leptonux, Joseph Millman, Guenter Zaehle, Frank Fejes, Mark Jeffery, Alberto da Silva, Mauricio Tavares, Kurt Rabitsch, Jeff Wieland, Frank Bertels, Steve Meier, Dan Lorenzini, Gerard Henry, Laurent Blume, Sean Berry, George Moberly, Erik Nordenberg, Mark Ashley, Jim Prescott, Christian Pelissier, Hugues Sapin, Colin A. White, Dale T. Long, Christophe Kalt, Bruno Delbono, Nan Liu, Frank Cusack, Marlon Sanchez\-Nunez, Jois Diwakar, Toni Viemero, Jens Larsson, Gordon D. Gregory, Luis Catacora, Erik Larson, Tim Longo, Mike Borkowski, Nicolas Goy, William Bonnet, Dave Love, Thomas Brandstetter, Daniel Kunkel, Gregor Longariva, Miroslav Zubcic, Tim Bradshaw, Chris Quenelle, Christopher Odenbach, Andy Fiddaman, Peter Sundstrom, Andreas F. Borchert, Jonah Simandjuntak, Damian Lilley, Chris Ridd, Albert Lee, James Lick, John Douglass, Andres A. Flores Concepcion, Chris Reece, Toni Viemero, Timothy Meader, John D. Groenveld, Ceri Davies, Martin Wismer, Laszlo Kiss, Mike Moya, Leon Koll, Shawn Boots, Mike Wallace, Robert P. McGraw, Peter Arnold, Matt Kolb, Mike Shackelford, John Dzubera, Donald Teed, Asif Iqbal, Stephen Nash, Jason Loretz, Bryan Howard, Roman, Jonathan Hoefker, Daniel Trinkle, Ron Halstead, Rob Fisher, Chris Coffey, Travis Freeland, Hans-Werner Jouy, Gary Mills, Craig Bell, Mick Russom, Brian King, Ashley Rowland, Guillermo Castellini, Bryan D. Moorehead, Mark Scheufele, Corey Becker, David Robson, Kevin Maguire, Mike Wallace, Marcos Della, Frank Sperber, Horst Scheuermann, Adrian Ulrich, Steve Fox, David Collodel, Jeremiah Johnson, Erik Schubert, David Sullivan, Tom Francen, Matthew Scala, Richard Mayebo, Gerald Sinkiewicz, David Montag, Steve Forman, Jeffrey King, Gerry Van Trieste, Chris Denneen, Greg Barry, Paul Armstrong, Andreas Fineske, Eric Kissinger, Torsten Peter, Yevgeniy Averin, Sean Walmsley, Alexander Skwar, Jeffrey King, Jones Olatunji, Richard Skelton, Kjetil Torgrim Homme, Brian McNamara, Gerry Sinkiewicz, Kazuyuki Sato, Mayuresh Kshirsagar, Mauro Mozzarelli, Judy Illeman Gaukel, Petri Kunnari, William Pool, Steven Faulconer, Rono Jacob, Will Green, Martial Rioux, Zafar Pravaiz, Romeo Theriault, Fredrich Maney, Ben Szoko, Pietari Hyvarinen, Roman Pestka, Juergen Mengeling, David S. Bryant, Maciek S., Alexander Sverdlov, David Coronel, David Groce, Jeff Woolsey, Thomas Marshall, Allen Eastwood, Mike Busse, Martin Bellenberg, Dennis Clarke, Dominique Frise, Mark Hopkins, Enda O'Connor, Victor Feng, Peter Englmaier, Paul B. Henson, Gerry Haskins, Jeff A. Earickson, Stuart Anderson, Dagobert Michelsen, Simon Bellwood, Ateeq Altaf, Andrew Berry, Julian Davies, Con Petsoglou, Uwe Wolfram, Micah Cowan, Dan Shaw, Paul Moore, Neal A. Lucier, Eric Bourgi, Sergiusz Pawlowicz, Paul Van Bommel, Matt Banks, Ray Cromwell, Jan Holzhueter, Liam Carey, Alex Docauer, Christopher S. Chan, Philip Kime, Michael Schmarck, Kevin L. Bliss, Thomas Bleek, Albert White, Ron Helzer, Sergei Haramundanis, Steven M. Christensen, Felix Schattschneider, Rajiv G Gunja, Jeremy Simpson, Jesse Caldwell, Amy Rich, Jens Elkner, Stephen Matich, Justus J. Addiss, Fred Chagnon, David French, Don O'Malley, Stuart F. Biggar, Diana Stockdale, Randal T. Rioux, Todd Koeckeritz, Matthew Braun, Shaimon Luke, Norman Lyon, Sebastian Kayser, Paul A. Zakas, Glenn Satchell, Ben Taylor, Brian Geary, Drazen Kacar, Edwin Schwab, Shahab Khan, Thots Soppannavar, Beth Lancaster, Michael Jackson, Daniel Pecka, Dirk Lemoisne, Scott L Nishimura, Mike Brown, Michele Vecchiato, Eugene Olshenbaum, Benny Kleykens, Colin Daly, Rod Holmes, Jeff Blaine, Tim Frost, Steven M. Falconer, Thomas Gouverneur, Marcel Hofstetter, Jeremy Daniel. .SH "MAILING LISTS" .IX Header "MAILING LISTS" Two mailing lists are available: .IP "pca-news" 4 .IX Item "pca-news" This is a one-way list for announcements of new versions and news. To join, send an empty message to . .IP "pca" 4 .IX Item "pca" This is a discussion and support list. Messages from pca-news will be posted to this list as well. Only members are allowed to post to the list. To join, send an empty message to . To post to the list, send your message to . .SH "SEE ALSO" .IX Header "SEE ALSO" .IP "\s-1PCA\s0 web site:" 4 .IX Item "PCA web site:" http://www.par.univie.ac.at/solaris/pca/