Bild Neubau
home uni Universität suche Suche kontakt Kontakt
unilogo Universität Stuttgart
Zentrale Dienste Informatik (ZDI)

Zentrale Dienste Informatik (ZDI)

 

Solaris patchen mit PCA


Für das Patchen von Solaris-Systemen empfiehlt sich das Perlskrip PCA. Mit Hilfe von PCA ist es möglich, automatisch benötigte Patches ausfindig zu machen und zu installieren. Genauso lassen sich auch gezielt einzelne Patches einspielen oder nur downloaden.

Um PCA nutzen zu können, braucht man zwei Dinge. Erstens das Skript selber, das am Besten nach /usr/bin kopiert wird, und zweitens die Konfigurationsdatei pca.conf, die nach /etc kopiert werden muß. Die Patches werden über einen lokalen Proxy heruntergeladen und installiert. Sollte ein Patch nicht bereits auf dem Proxy abgelegt sein, holt er ihn über den Campus SunSolve-Account direkt von SunSolve (das kann dann einige Minuten dauern) und übermittelt ihn an den PCA-Client.

Folgendes benötigt man für PCA:

Eine Beschreibung von PCA befindet sich auf der Homepage des Autors bzw. läßt sich mit

pca -m
aufrufen. Es folgen einige Beispiele.

Update von PCA selber

Ab und zu muß das PCA-Skript aktualisiert werden, um den Änderungen auf SunSolve zu folgen. Dies ist dank einer eingebauten Option direkt mit PCA möglich.
# pca --update=now
New version available: 20081024-01 (current version: 20080911-01)

Changes:

Version 20081024-01

 * Read only pca-proxy.conf (not pca.conf) in proxy mode
 * Provide more detailed exit status
 * Include patch count and sum of patch ages in header
 * Fix handling of downloaded files that are too short
 * Check whether patch already exists before announcing download
 * Fix handling of PTF/ACSLS patches
 * Read architecture information from pkginfo output
 * Accept wrong entries in the arch column in patchdiag.xref
 * Handle special characters in package version string
 * Fix erroneous behaviour with checking for patch existance
 * Simplify internal handling of extra patch requirements
 * Calculate patch age only once
 * Apply check: add 116413, 119775, 116831, 116832
 * Update list of contributors

Update
Done

Liste aller verfügbaren und nicht installierten Patches

# pca -l
Downloading xref file to /var/tmp/patchdiag.xref
Trying http://inf6/sunpatches/pca-proxy.cgi?
Using /var/tmp/patchdiag.xref from Nov/07/08
Host: e4500 (SunOS 5.10/Generic_137111-08/sparc/sun4u)
List: missing (30/132)

Patch  IR   CR RSB Age Synopsis
------ -- - -- --- --- -------------------------------------------------------
121430 25 < 29 ---  11 SunOS 5.8 5.9 5.10: Live Upgrade Patch
124863 07 < 08 ---   4 Sun Studio 12: Patch for Sun C++ Compiler
127888 10 < 11 RS-   5 SunOS 5.10: ipf patch
137129 -- < 05 ---   4 SunOS 5.10: format patch
137141 -- < 01 ---   4 SunOS 5.10: Netra topology patch
138104 -- < 01 RS-   4 SunOS 5.10: snoop patch
138106 -- < 02 ---   4 SunOS 5.10: ipseckey and ikeadm patch
138253 -- < 01 RS-   5 SunOS 5.10: /sbin/sh patch
[...]

Liste aller recommended und security Patches

# pca -l missingrs
Using /var/tmp/patchdiag.xref from Nov/07/08
Host: e4500 (SunOS 5.10/Generic_137111-08/sparc/sun4u)
List: missingrs (10/44)

Patch  IR   CR RSB Age Synopsis
------ -- - -- --- --- -------------------------------------------------------
127888 10 < 11 RS-   5 SunOS 5.10: ipf patch
138104 -- < 01 RS-   4 SunOS 5.10: snoop patch
138253 -- < 01 RS-   5 SunOS 5.10: /sbin/sh patch
138269 -- < 02 RS-   4 SunOS 5.10: devfs patch
138322 -- < 02 RS-   4 SunOS 5.10: Perl patch
138361 -- < 01 RS-   4 SunOS 5.10: snmpXdmid patch
138371 -- < 02 R--   4 SunOS 5.10: mech_krb5.so.1 patch
138373 -- < 02 RS-   5 SunOS 5.10: fifofs patch
138387 -- < 01 RS-   4 SunOS 5.10: libc.so.1.9 patch
138876 -- < 01 RS-   5 SunOS 5.10: usr/lib/inet/in.dhcpd patch

Suche nach Patches mit einem Suchausdruck

Als Beispiel sollen alle Patches für Sun Studio (und automatisch die dazugehörigen Abhängigkeiten) gesucht werden. Dies geschieht, indem man den Suchausdruck mit dem Parameter -p für pattern angibt. Hier also -p Studio

# pca -l -p Studio
Downloading xref file to /var/tmp/patchdiag.xref
Trying http://inf6/sunpatches/pca-proxy.cgi?
Using /var/tmp/patchdiag.xref from Nov/07/08
Host: inf6 (SunOS 5.10/Generic_120011-14/sparc/sun4u)
List: missing (5/145)

Patch  IR   CR RSB Age Synopsis
------ -- - -- --- --- -------------------------------------------------------
124861 08 < 09 ---  22 Sun Studio 12: Compiler Common patch for Sun C C++ F77 F95
124863 07 < 08 ---   4 Sun Studio 12: Patch for Sun C++ Compiler
124867 07 < 08 ---  32 Sun Studio 12: Patch for C 5.9 compiler
127000 05 < 06 ---  40 Sun Studio 12: Patch for Fortran 95 8.3 Compiler
127001 01 < 02 ---  47 Sun Studio 12: Patch for Fortran 95 8.3 Dynamic Libraries

Lesen der Beschreibung zu einem Patch

Hier wird die Beschreibung der aktuellen Revision des Patches 127888 angezeigt:
# pca -r 127888
Using /var/tmp/patchdiag.xref from Nov/07/08
Downloading README for 127888-11
Trying http://inf6/sunpatches/pca-proxy.cgi?
Done
Man kann auch eine bestimmte Revision aufrufen, indem man die Nummer mit einem Bindestrich an die Patchnummer anhängt:
# pca -r 127888-10
Downloading README for 127888-10
Trying http://inf6/sunpatches/pca-proxy.cgi?
Done

Installation von Patches

Um Patches zu installieren, benutzt man statt der Option -l die Option -i für install. Zusätzlich kann man noch die Option -V (verbose) angeben, wenn man weitere Details sehen möchte. Es wird dringend geraten, voher in ein Verzeichnis mit genügend Platz zu wechseln, z.B. nach /tmp.
Die Patches werden alle vom lokalen PCA-Proxy auf dem Rechner inf6 bezogen, welche sie bei Bedarf von SunSolve herunterlädt. Einmal heruntergeladene Patches bleiben auf dem Proxy, so daß sie nicht erneut angefordert werden müssen, bzw. man kann auch ältere Patches einspielen, die nicht (mehr) auf SunSolve zu finden sind.
Hier als Beispiel die Installation aller recommended/security Patches:

# pca -i missingrs
Using /var/tmp/patchdiag.xref from Nov/07/08
Host: e4500 (SunOS 5.10/Generic_137111-08/sparc/sun4u)
List: missingrs (10/44)

Patch  IR   CR RSB Age Synopsis
------ -- - -- --- --- -------------------------------------------------------
[...]
138253 -- < 01 RS-   5 SunOS 5.10: /sbin/sh patch

Looking for 138253-01 (3/10)
Trying http://inf6/sunpatches/pca-proxy.cgi?
Done

Installing 138253-01 (3/10)
Unzipping patch
Running patchadd
Done
Reboot required
------------------------------------------------------------------------------
138269 -- < 02 RS-   4 SunOS 5.10: devfs patch

Looking for 138269-02 (4/10)
Trying http://inf6/sunpatches/pca-proxy.cgi?
Done

Installing 138269-02 (4/10)
Unzipping patch
Running patchadd
Done
Reboot recommended
------------------------------------------------------------------------------
138322 -- < 02 RS-   4 SunOS 5.10: Perl patch

Looking for 138322-02 (5/10)
Trying http://inf6/sunpatches/pca-proxy.cgi?
Done

Installing 138322-02 (5/10)
Unzipping patch
Running patchadd
Done
[...]
Installation aller Sun Studio-Patches im Verbose-Modus:
# pca -i -V -p Studio
Option install: 1
Option patchdir: /tmp/.
Option patchurl: http://inf6/sunpatches/pca-proxy.cgi?
Option xrefurl: http://inf6/sunpatches/pca-proxy.cgi?
Option pattern: Studio
Option debug: 1
ARGV: missing
Version: 20081024-01
Config files: /etc/pca.conf
Using /usr/sfw/bin/wget (1.10.2, 11002)
Prerequisites for threads not met, setting threads to 0
Never update
Expanded patch list: missing
xref now    : Tue Nov 11 15:00:09 2008
xref current: Tue Nov 11 14:39:25 2008
xref age    : 1244
Local file /var/tmp/patchdiag.xref is up to date
Reading from /usr/bin/showrev -p  2>/dev/null
Using /var/tmp/patchdiag.xref from Nov/07/08
Bad patch installed: 127737-02
124861-07 required by 124863: already installed
Host: e4500 (SunOS 5.10/Generic_137111-08/sparc/sun4u)
List: missing (1/4)

Patch  IR   CR RSB Age Synopsis
------ -- - -- --- --- -------------------------------------------------------
124863 07 < 08 ---   4 Sun Studio 12: Patch for Sun C++ Compiler

Looking for 124863-08 (1/1)
Trying http://inf6/sunpatches/pca-proxy.cgi?
/usr/sfw/bin/wget "http://inf6/sunpatches/pca-proxy.cgi?124863-08" --timeout 3600 -O /tmp/./124863-08.tmp
--15:00:27--  http://inf6/sunpatches/pca-proxy.cgi?124863-08
           => `/tmp/./124863-08.tmp'
Resolving inf6... 129.69.211.16
Connecting to inf6|129.69.211.16|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 36,694,674 (35M) [application/zip]

100%[====================================>] 36,694,674    11.33M/s    ETA 00:00

15:02:47 (11.32 MB/s) - `/tmp/./124863-08.tmp' saved [36694674/36694674]

Done

Installing 124863-08 (1/1)
Unzipping patch
Checking for reboot/reconfig in patchinfo
Running patchadd
Starting patchadd at Tue Nov 11 15:02:59 2008
/usr/sbin/patchadd   /tmp/pca.12264121672724/124863-08

Validating patches...

Loading patches installed on the system...

Done!

Loading patches requested to install.

Done!

Checking patches that you specified for installation.

Done!


Approved patches will be installed in this order:

124863-08


Checking installed patches...
Verifying sufficient filesystem capacity (dry run method)...
Installing patch packages...

Patch 124863-08 has been successfully installed.
See /var/sadm/patch/124863-08/log for details

Patch packages installed:
  SPROcpl
  SPROcplx
  SPROmrcpl
  SPROscl
  SPROsclx
  SPROstl4a
  SPROstl4h
  SPROstl4o
  SPROstl4x
  SPROstl4y
  SPROtl7x
  SPROtlbn7
  SPROtll7
  SPROtll7x


Done
------------------------------------------------------------------------------
Download Summary: 1 total, 1 successful, 0 skipped, 0 failed
Install Summary : 1 total, 1 successful, 0 skipped, 0 failed