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

Erzeugung von AIX-Paketen im bff-Format mit Bull mklpp

Inhalt

  1. Installation
  2.  Vorbereitungen
  3.  Paketerzeugung
  4.  Bauen des BFFs

 

I. Installation

BULL mklpp liegt seinerseits als installierbares AIX-Paket auf dem Bull-Server unter

http://www.bullfreeware.com/download/aix43/bull.mklpp-1.2.9.0.exe

Die Datei liegt als selbst-extrahierendes Archiv vor, das wie folgt ausgepackt wird:

 aix# chmod +x bull.mklpp-1.2.9.0.exe
 aix# ./bull.mklpp-1.2.9.0.exe
 UnZipSFX 5.32 of 3 November 1997, by Info-ZIP (Zip-Bugs@lists.wku.edu).
   inflating: bull.mklpp-1.2.9.0.bff
   inflating: bull.mklpp-1.2.9.0.bff.asc

Die Datei 'bull.mklpp-1.2.9.0.bff' ist das installierbare AIX-Paket, das über SMIT installiert werden kann:

 aix# inutoc .
 aix# smitty install_latest

Im SMIT kann dieses Paket dann ausgewählt werden:

    |                                                                          |
    | > freeware.bull.mklpp                                                ALL |
    |    + 1.2.9.0  Light-LPP generation tool                                  |
    |                                                                          |

 

II. Vorbereitungen

Die hier beschriebenen Vorbereitungen sind als Vorschlag zu werten - je nach persönlicher Vorliebe kann davon abgewichen werden.

 aix# mklv -y lvlpp rootvg 100

legt beispielsweise ein neues LV in der rootvg namens 'lvlpp' an, das aus 100 LPs besteht.

 aix# crfs -v jfs -d lvlpp -m /lppdir

legt ein jfs-Dateisystem in das neue LV, das unter /lppdir in den Verzeichnisbaum eingehängt wird:

 aix# mount /lppdir

 

III. Paketerzeugung

 aix# cd /lppdir
 aix# mkdir bff
 aix# mkdir in
 aix# mkdir lpp
 aix# mkdir out

Im Verzeichnis bff werden später die mit mklpp erzeugten Pakete im bff-Format zu finden sein. Falls dieses Verzeichnis nicht existiert, wird es von mklpp angelegt.

Das Verzeichnis in soll die Quelldateien der Pakete aufnehmen, falls diese selbst in irgendeiner Form gepackt sind (z.B. im Tar-Format)

Das Verzeichnis lpp ist das Arbeitsverzeichnis von mklpp. Dort befinden sich später zu jedem Paket Unterverzeichnisse, in denen die Verzeichnisstruktur der Pakete abgebildet werden, Copyright-Notizen hinterlegt werden können u.dgl.m.

Das Verzeichnis out schließlich ist wieder vom Namen her festgelegt und wird von mklpp angelegt, falls es nicht bereits besteht. In dieses Verzeichnis schreibt mklpp die aus dem Verzeichnis lpp erstellten Pakete - aber nicht mit dem richtigen Namen, der findet sich im Verzeichnis bff als Link!

 

a. Anlegen der Paketstruktur mit newlpp
Es ist in das Verzeichnis /lppdir/lpp zu wechseln und mit dem Befehl newlpp der Rohbau des neuen Paketes anzulegen. Dies soll anhand eines konkreten Beispiels erläutert werden, der Organizer-Software grok. Diese liegt als tgz-Paket in der Version 1.4.3 für AIX vor. Folgendes ist zu tun:

 aix# cd /lppdir/lpp
 aix# newlpp grok-1.4.3 xmbase-grok

Dieser Vorgang erzeugt ein Verzeichnis grok-1.4.3 mit einer Verzeichnisrohstruktur, die vor allem für Freeware-Pakete angepasst ist, indem bereits ein /usr/local/-Baum angelegt wird mit einem Verzeichnis /usr/local/lib/grok-1.4.3. Verzeichnisse, die nicht benötigt werden, können gelöscht werden - insbesonbere das automatisch unter /usr/local/lib/ erzeugte Unterverzeichnis mit dem Paketnamen wird selten benötigt.

 aix# rmdir usr/local/lib/grok-1.4.3

Dieser Schritt ist optional, da ein leeres Verzeichnis keinen Schaden im System anrichtet.

 

b. Daten einspielen
Im nächsten Schritt werden nun tatsächlich die zum neuen Paket gehörenden Daten eingespielt. Dazu muss der gesamte Verzeichnisbaum des Paketes, wie es normalerweise unter / installiert ist, im Verzeichnis /lppdir/lpp/grok-1.4.3 abgebildet werden. Am einfachsten geht das, wenn bereits ein tar-Archiv in kompletter Struktur vorliegt, wie in unserem Beispiel:

 aix# cd /lppdir/lpp/grok-1.4.3

 aix# gtar xvzf /lppdir/in/xmbase-grok.1.4.tar.gz

Damit ist dieser Schritt abgeschlossen. Bei eigenen Softwareentwicklungen kann dies natürlich auch durch manuelles Anlegen des Baumes mit 'mkdir' bzw. 'mkdir -p' und anschließendem Kopieren der zum neuen Paket gehörenden Dateien in diese Struktur geschehen.

 

c. Steuerdatei anpassen
Eine Steuerdatei befindet sich direkt an der Wurzel des Paketverzeichnisses (/lppdir/lpp/grok-1.4.3). Es ist die Datei mit dem Namen 'lppname'

Sie sieht jetzt noch so aus:

 aix# cat lpp_name
 R I freeware.xmbase-grok {
 freeware.xmbase-grok.rte 00.00.0000.0000 01 N U en_US xmbase-grok pre-compiled utility
 [
 %
 /usr 5
 /usr/local 7
 /usr/local/bin 1903
 /usr/local/lib 136
 /usr/local/lib/X11 14
 /usr/local/lib/grokdir 289
 /usr/local/man 1
 /usr/lpp 3
 /usr/lpp/freeware.xmbase-grok-1.4.3 1
 INSTWORK 128 128
 %
 %
 %
 %
 ]
 }

Die grün hervorgehobenen Stellen müssen geändert werden.

Dies ist zum einen die Versionsnummer, die angepasst werden sollte. Wir können hier allerdings nicht '01.04.0003.0000' eintragen, wie es der Version von grok eigentlich entsprechen würde, da dieses als Update-Paket behandelt würde: Es dürfen nur die ersten beiden Stellen von Null verschieden sein, wir setzen also: '01.04.0000.0000'

Die zweite Stelle ist die Paketbeschreibung, wie sie nachher auch mit installp oder im SMIT zu sehen ist, hier setzen wir z.B. 'Graphical Resource Organizer Kit'

Wer nicht möchte, dass sein Paket mit 'freeware.' beginnt, kann in der zweiten Zeile diese Zeichenkette löschen, da es sich bei grok aber um Freeware handelt, ändern wir nichts.

An einer vierten Stelle muss angesetzt werden, falls das zu erstellende Paket Voraussetzungen (prerequisites) benötigt, das kann eine Betriebssystem-Version, zusätzliche Pakete wie Perl oder Motif oder X Window sein. Diese 'prerequisites' werden zwischen der öffnenden eckigen Klammer ([) in der dritten und dem Prozentzeichen (%) in der vierten Zeile eingefügt, beginnend mit dem Schlüsselwort '*prereq'. Dort können auch mehrere untereinander eingetragen werden, also etwa:

 [
 *prereq bos.rte 4.2.1.0
 *prereq X11.motif.lib 4.2.1.0
 %

Diese Zeilen würden bedeuten, dass AIX mindestens auf dem Level 4.2.1.0.0 sein muss und dass die Motif-Laufzeitbibliotheken in der Version 4.2.1 oder höher vorhanden sein müssen. Sind diese Voraussetzungen nicht erfüllt, würde eine Installation abgebrochen werden (oder diese würden automatisch nachinstalliert, falls auf dem aktuellen Medium auffindbar - je nach installp-Einstellungen).

So sieht die Datei lpp_name aus, nachdem alle Änderungen angebracht wurden:

 4 R I freeware.xmbase {
 freeware.xmbase-grok.rte 01.04.0000.0000 01 N U en_US Graphical Resource Organizer Kit
 [
 *prereq X11.motif.lib             4.2.1.0
 %
 /usr 5
 /usr/local 7
 /usr/local/bin 1903
 /usr/local/lib 136
 /usr/local/lib/grok-1.4.3 1
 /usr/local/lib/X11 14
 /usr/local/lib/grokdir 289
 /usr/local/man 1
 /usr/lpp 3
 /usr/lpp/freeware.xmbase 1
 INSTWORK 128 128
 %
 %
 %
 %
 ]
 } 

 

d. Copyright-Notiz einfügen
Es besteht auch die Möglichkeit, eine eigene Copyright-Notiz zu erzeugen - diese wird dann bei der Installation über SMIT oder das installp-Kommando ausgegeben. Dazu wird im Verzeichnis .info/ eine Datei mit dem Namen 'copyright' erzeugt, in die einfach der betreffende ASCII-Test eingefügt wird. Falls eine solche Datei nicht existiert, bricht mklpp ab!

 

e. Pre- und Post-Installationsskripts
Optional ist die Erzeugung von Pre- und Post-Installationsskripts. Möchte man ein solches erzeugen, geht man wie folgt vor:

1. Pre-Installationsskript

 aix# cp /usr/local/lib/mklpp-1.2/pre_i /lppdir/lpp/grok-1.4.3
 aix# cd /lppdir/lpp/grok-1.4.3
 aix# vi pre_i

 aix# mv pre_i .info/freeware.xmbase-grok.rte.pre_i

Der Name 'freeware.xmbase-grok.rte.post_i' ergibt sich aus dem Namen in der zweiten Zeile von lpp_name,

freeware.xmbase-grok.rte 01.04.0000.0000 01 N U en_US Graphical Resource Organizer Kit

an den die Endung '.post_i' angehängt wird.

2. Post-Installationsskript

 aix# cp /usr/local/lib/mklpp-1.2/post_i /lppdir/lpp/grok-1.4.3
 aix# cd /lppdir/lpp/grok-1.4.3
 aix# vi post_i

 aix# mv pre_i .info/freeware.xmbase-grok.rte.post_i

 

IV. Bauen des BFFs

Nachdem alle Vorarbeiten nun abgeschlossen sind, kann es endlich losgehen. Alles was zu tun ist, ist im Paket-Wurzelverzeichnis den Befehl mklpp aufzurufen:

 aix# mklpp
         rm -f .info/freeware.xmbase-grok.rte.al
         rm -f .info/freeware.xmbase-grok.rte.size
         rm -f .info/freeware.xmbase-grok.rte.inventory
         rm -f .info/backup_files
         rm -f usr/lpp/freeware.xmbase-grok/liblpp.a
         rm -f usr/lpp/freeware.xmbase-grok/inst_root/liblpp.a
         rm -f .info/liblpp.a
         rm -f /lppdir/out/xmbase-grok-1.4.0.0.bff /lppdir/out/xmbase-grok-1.4.0.0.bff.asc 
               /lppdir/zip/xmbase-grok-1.4.0.0.exe /lppdir/bff/xmbase-grok-1.4.0.0.bff
               /lppdir/bff/xmbase-grok-1.4.0.0.bff.asc
 No freeware.xmbase-grok.rte.al, applying logic to the problem...
 No size file, try this for size...
 No inventory file, inventing it...
 No cfgfiles script, no pre-configured option, forget it
 Making .info/liblpp.a archive
 No root part to make
 Making list of files to backup
 Updating lpp_name
 Making installp format distribution on /lppdir/out/xmbase-grok-1.4.0.0.bff
 Target "all" is up to date.

Das wars. Das Paket 'xmbase-grok-1.4.0.0.bff' befindet sich im Verzeichnis /lppdir/out und kann mit SMIT auf jeder AIX-Maschine installiert werden:

So präsentiert sich das neue Paket im SMIT (smitty install_latest):

        |                                                                          |
        |   freeware.xmbase-grok                                               ALL |
        |    + 1.4.0.0  Graphical Resource Organizer Kit                           |
        |                                                                          |