Bau von Sun Solaris Paketen

Vorwort

Leider ist für solche "außenseiter" OS wie Sun Solaris kaum vorcompilierte
Software vorhanden, deswegen hier eine kleine Einführung in den Software Paket
bau

Warum Pakete bauen?

Eine Software einfach zu Compilieren und mit "make install" zu installieren
macht es einen Admin schwer, z.B. bei einen Update die alter Version
wieder sauber vom System zu bekommen. Ein Paket kann man auch ohne Probleme
auf einer groesseren anzahl auf System installieren, stell sich mal einer
einen Admin vor der eine Software auf 100 Rechner einzelnt compiliert...

Was wir brauchen

Zuerst natürlich den Source der Software für die wir ein Pkg bauen wollen.
Was wir auch noch brauchen ist einen Compiler, die tools make, autoconf
und Co. Zu finden ist dies alles auf der Sun Software Companion CD.

An die Arbeit

Zuerst entpacken wir den Source des Programms das wir übersetzen wollen.
Dann führen wir das Configure Script mit der Option --prefix=/tmp/pkg aus.
Wir geben --prefix=/tmp/pkg an weil wir die Software nur um das Pkg zu bauen
nach /tmp/pkg installieren, damit wir die Software dann auch wieder löschen
können ohne unser sauberes System beschmutzen müssen.
Danach frühren wir make aus um die Software zu übersetzen, und dann
make install, um sie zu installieren.

% ./configure --prefix=/tmp/pkg
% make
% make install

Nun müssen wir eine Liste aller installierten Dateien machen, dies machen wir
so:
% find /tmp/pkg -print > /tmp/softwarefiles

Diese Liste enthältet als Path fuer das Pkg jetzt aber /tmp/pkg, was wir aber
fuer das fertig Pkg nicht wollen. Also aendern wir den Path.
% sed 's,/tmp/pkg,/usr/local,g' < /tmp/softwarefiles > softwarefiles-correct

In meinen Beispiel hier wird die Software am ende unter /usr/local
installiert. /usr/local ist eigentlich ein recht guter Plaz für zusätzliche
Software und kann ohne weiteres übernommen werden.

Wir koennen nun /tmp/pkg wieder loeschen und wechsel jetzt nochmal in den Ordner
unseres Programmes, um es diesmal an die richtige stelle zu installieren.
% rm -r /tmp/pkg
% cd Sofware
% make clean
% ./configure --prefix=/usr/local
% make
% make install
% make clean

Nun erstellen wir einen Prototypen aus der /tmp/softwarefiles Datei. Wir haben
das Paket oben schon an die richtige Stelle mit "make install" installiert,
weil unser Prototyp die Dateien fuer das Paket vom richtigen Path braucht.
% echo "i pkginfo=./pkginfo" > /tmp/Prototype
% cat /tmp/softwarefiles-correct | pkgproto >> /tmp/Prototype

Die Datei ./pkginfo gibt auskunft zB ueber den Names des Pkg, die Version usw.
Sie sollte etwa so aussehen:
PKG="SOBLzsh"
NAME="zsh"
VERSION="4.0.6"
ARCH="sparc"
CLASSES="none"
CATEGORY="application"
PSTAMP="31102002"
EMAIL="test@test.net"
ISTATES="S s 1 2 3"
RSTATES="S s 1 2 3"
BASEDIR="/"

Jetzt wird das Paket wie folgend erstellt:
% cd /tmp
% pkgmk -o -r / -d /tmp -f /tmp/Prototype
% pkgtrans -s . /tmp/Software-Version-OS-Arch

Wenn wir fertig sind können wir die Dateien die wir nicht mehr benötigen löschen
% rm -r /tmp/Software /tmp/Prototzpe /tmp/pkginfo /tmp/softwarefiles*

Man kann jetzt das Pkg auch noch mit einem Komprimierungsprogramm packen:
% bzip2 -s Software-Version-OS-Arch

Am Schluss nun können wir unsere Software wie gewohnt mit pkgadd hinzufühgen oder mit pkgrm wieder von den System löschen.

Schluss

Für Fragen oder bei Problemen postet doch im Sonnenblen.de Forum und ich helfe
gerne weiter. Wer sich noch näher mit Paketen beschäftigen will, den legen ich
die Manpages zu Herzen: pkginfo, pkgadd, pkgrm, pkgmk, pkgtrans.



Christopher Atlan - Lordy
atlan at utanet dot at
01.11.2002