Erzeugung von Paketen für «pkgadd» unter Solaris 8
Inhalt
- Voraussetzungen
- Festlegen einer Pfadstruktur
- Anlegen der Steuerdateien
- Bauen des Paketes
- 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:
Für den Fall, dass ein Post-Installationsskript ausgeführt werden soll, legen wir eine weitere Datei an:4. postinstall
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:
- Verweise auf andere Dateien
...beginnend mit i (für 'include') - Den Suchpfad für die enthaltenden Dateien
...beginnend mit !search. Es werden nur Dateien eingepackt, die sich im Suchpfad befinden. - Eine vollständige Liste aller Dateien und Pfadkomponenten
...beginnend mit f (für 'file') oder d (für 'directory'). Andere Dateitypen haben andere Buchstaben (angelehnt an den Dateityp, wie ihn der find-Befehl benutzt.
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:
- SUNW_PRODVERS=
Betriebssystemversion (5.8 für Solaris 8) - PKG=
Der Name des Pakets. Bei der Namensgebung aufpassen, da die Möglichleiten sehr begrenzt sind, nur alphanumerische Zeichen (erstes Zeichen darf keine Ziffer sein!) sind erlaubt und derer auch nicht mehr als 9. Üblich sind Großbuchstaben für die Softwarefirma (hier UXW für unixwerk ) und Kleinbuchstaben für den Inhalt (hier: vtcalc). - NAME=
Eine etwas detailiertere Beschreibung ohne die Limitierungen - CLASSES=
Hier müssen all jene Klassen aufgeführt werden, die Sie in der pkginfo-Datei verwenden (zweites Feld nach d, f, ...).
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.
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 |
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. |