GästebuchIhr Eintrag in unser Gästebuch KontaktNehmen Sie Kontakt mit den Autoren auf ArchivAlle Unixwerk- Artikel seit 2003
28. April 2004

Erzeugung von Paketen für «pkgadd» unter Solaris 8

Inhalt

  1. Voraussetzungen
  2. Festlegen einer Pfadstruktur
  3. Anlegen der Steuerdateien
  4. Bauen des Paketes
  5. Installation des Paketes

 

I. Voraussetzungen

Die Befehle für das Paket-Management befinden sich im Paket SUNWcsu und sind somit auf jeden Fall installiert:

 sunny# pkgchk -l SUNWcsu | grep Pathname: | grep pkg
 Pathname: /usr/bin/pkginfo
 Pathname: /usr/bin/pkgmk
 Pathname: /usr/bin/pkgparam
 Pathname: /usr/bin/pkgproto
 Pathname: /usr/bin/pkgtrans
 Pathname: /usr/sadm/install/bin/pkginstall
 Pathname: /usr/sadm/install/bin/pkgname
 Pathname: /usr/sadm/install/bin/pkgremove
 Pathname: /usr/sbin/pkgadd
 Pathname: /usr/sbin/pkgask
 Pathname: /usr/sbin/pkgchk
 Pathname: /usr/sbin/pkgmv
 Pathname: /usr/sbin/pkgrm

 

II. Festlegen einer Pfadstruktur

Zunächst sollte man sich einige Überlegungen über die Pfadstruktur machen. Man benötigt ein Paketverzeichnis: Im folgenden wird im Benutzerheimatverzeichnis ein Verzeichnis pkg angelegt, in dem wiederum für jedes zu erstellende Softwarepaket ein weiteres Unterverzeichnis angelegt wird. Dieser Vorgang soll anhand eines konkreten Beispiels erläutert werden, einem kleine Taschenrechnerprogramm für VT100-kompatible Terminals namens 'vtcalc'.

 sunny# mkdir /home/myname/pkg
 sunny# mkdir /home/myname/pkg/vtcalc

In diesem Verzeichnis wird nun die Pfad- und Dateistruktur abgebildet, die die Software auf dem Zielsystem einnehmen soll, also beispielsweise:

 sunny# cd /home/myname/pkg/vtcalc

 sunny# find usr     
 usr
 usr/local
 usr/local/bin
 usr/local/bin/calc
 usr/local/bin/vtcalc-2.0
 usr/local/man
 usr/local/man/man1
 usr/local/man/man1/calc.1

 

III. Anlegen der Steuerdateien

Folgende Steuerdateien legen wir unter /home/myname/pkg/vtcalc an:

  1. prototype
  2. version
  3. pkginfo
Für den Fall, dass ein Post-Installationsskript ausgeführt werden soll, legen wir eine weitere Datei an:

    4.  postinstall

 

ad 1.
Die zentrale Steuerdatei heißt prototype

 ./prototype
 i pkginfo=/home/myname/pkg/vtcalc/pkginfo
 i postinstall=/home/myname/pkg/vtcalc/postinstall
 i version=/home/myname/pkg/vtcalc/version
 !search /home/myname/pkg/vtcalc/usr/local/bin /home/myname/pkg/vtcalc/usr/local/man/man1
 d Application /usr 0755 root bin
 d Application /usr/local 0755 root bin
 d Application /usr/local/bin 0755 root bin
 d Application /usr/local/man 0755 bin bin
 d Application /usr/local/man/man1 0755 bin bin
 f Application /usr/local/bin/calc 0755 root bin
 f Application /usr/local/bin/vtcalc-2.0 0755 root bin
 f Application /usr/local/man/man1/calc.1 0644 bin bin

Die Datei enthält mindestens folgende Einträge:

 

ad 2.
Die Paketinformationen, die nach der Installation mit dem Befehl pkginfo eingesehen werden, liegen in der Datei, die in der zentralen Steuerdatei prototype unter pkginfo referenziert ist:

i pkginfo=/home/myname/pkg/vtcalc/pkginfo

Ihr Inhalt:

 ./pkginfo
 SUNW_PRODNAME="SunOS"
 SUNW_PRODVERS="5.8"
 SUNW_PKGTYPE="usr"

 PKG="UXWvtcalc"
 NAME="Commandline Calculator for UN*X"
 VERSION="2.0.0"
 ARCH="sparc"
 VENDOR="unixwerk"

 CATEGORY="application"
 PSTAMP="myname"
 CLASSES="Application"

Das Beispiel oben enthält die minimal benötigten Einträge. Die meisten Felder sollten wohl selbsterklärend sein. Die wichtigsten jedoch noch einmal im Einzelnen:

 

ad 3.
Versionsinformationen liegen in der Datei, die in der zentralen Steuerdatei prototype unter version referenziert ist:

i version=/home/myname/pkg/vtcalc/version

Die Versionsnummer sollte mit dem Eintrag unter VERSION= in der pkginfo-Datei übereinstimmen.

 

ad 4.
Dies ist keine Steuerdatei, sondern ein Shell-Skript, das automatisch nach dem Entpacken ausgeführt wird. Es wird über die Zeile

i postinstall=/home/myname/pkg/vtcalc/postinstall

referenziert. Man beachte, dass der Pfad für die Installskripts klein ist und deshalb absolute Pfadnamen angegeben werden sollten, falls es sich nicht um die absoluten Basisbefehle handelt. Unseres sieht so aus:

 ./postinstall
 ( cd /usr/local/bin ; rm -f vtcalc )
 ( cd /usr/local/bin ; ln -s vtcalc-2.0 vtcalc )

 

IV. Bauen des Paketes

 sunny# pkgmk -o
 ## Building pkgmap from package prototype file.
 ## Processing pkginfo file.
 ## Attempting to volumize 8 entries in pkgmap.
 part  1 -- 94 blocks, 13 entries
 ## Packaging one part.
 /var/spool/pkg/UXWvtcalc/pkgmap
 /var/spool/pkg/UXWvtcalc/pkginfo
 /var/spool/pkg/UXWvtcalc/root/usr/local/bin/calc
 /var/spool/pkg/UXWvtcalc/root/usr/local/bin/vtcalc-2.0
 /var/spool/pkg/UXWvtcalc/root/usr/local/man/man1/calc.1
 /var/spool/pkg/UXWvtcalc/install/postinstall
 /var/spool/pkg/UXWvtcalc/install/version
 ## Validating control scripts.
 ## Packaging complete.

Das Paket liegt nun im Verzeichnis /var/spool/pkg/UXWvtcalc und könnte von dort auch installiert werden. Im Allgemeinen wollen Sie aber eine einzige Datei, die alle Komponenten enthält und nicht alle Dateien einzeln; deshalb wandeln wir das Paket mit pkgtrans um:

 sunny#  pkgtrans /var/spool/pkg vtcalc-sol8-2.0.0.pkg UXWvtcalc
 Transferring  package instance

Wir finden jetzt die Datei vtcalc-sol8-2.0.0.pkg im Verzeichnis /var/spool/pkg vor, die sich mit pkgadd installieren lässt:

 

V. Installation des Paketes

 sunny# pkgadd -d vtcalc-sol8-2.0.0.pkg all

 Processing package instance <UXWvtcalc> from </var/spool/pkg/vtcalc-sol8-2.0.0.pkg>

 Commandline Calculator for UN*X
 (sparc) 2.0.0

 Do you want to continue with the installation of <UXWvtcalc> [y,n,?] y

 unixwerk
 ## Processing package information.
 ## Processing system information.
 ## Verifying disk space requirements.
 ## Checking for conflicts with packages already installed.
 ## Checking for setuid/setgid programs.

 This package contains scripts which will be executed with super-user
 permission during the process of installing this package.

 Do you want to continue with the installation of <UXWvtcalc> [y,n,?] y

 Installing Commandline Calculator for UN*X as <UXWvtcalc>

 ## Installing part 1 of 1.
 /usr/local/bin/calc
 /usr/local/bin/vtcalc
 /usr/local/man/man1/calc.1
 [ verifying class <Application> ]
 ## Executing postinstall script.

 Installation of <UXWvtcalc> was successful.