Slackware Packetmanagment HOWTO


Die Originalversion dieses Textes ist hier zu finden ( Vielen Dank an Akron ): http://www.slackforum.de/forum/index.php?t=msg&th=346

In Zeiten in denen Tools wie "checkinstall" die es bis in die /extra-Serie der Distribution geschafft haben, ist es fraglich, warum man ein Packet überhaupt noch von Hand schnüren sollte. Auf der andern Seite hat der traditionelle Weg wohl doch immer noch einen Vorteil, der obendrein noch genau dem Geist Slackware's entspricht - maximale Kontrolle.

Als allererstes sollte man verstehen, was genau ein Slackware-Packet ist. Wie die Dateiendung schon vermuten lässt, handelt es sich um nichts weiter als einen Tarball - eine gezippte Sammlung von Dateien die sauber in (mehr oder weniger) übersichtlichen Ordnern gepackt worden sind. Wie beim kompilieren von Source-Code kann man diese an jeder beliebigen Stelle extrahieren. Tools wie "installpkg" machen nicht viel mehr, nur mit dem Unterschied, das ein Softwarepacket stets von der Wurzel / aus entpackt wird. Das bringt uns zu der Schlussfolgerung, dass wir, um Software zu installieren, auch einfach folgende Schritte ausführen könnten:

cd /

tar xvzf packetname

Funktioniert tatsächlich, leider mit einem kleinen Schönheitsfehler. Wie deinstalliert man wieder? Und genau hier springt "installpkg" ein, es führt eine kleine Datenbank in /var/log/packages über die einzelnen Files der jeweiligen Software. Mit dieser Information ist es ein leichtes für das Gegenstück "removepkg" seine Arbeit zu verrichten.

Genug der grauen Theorie, wir wollten schliesslich Pakete schnüren. Ich gehe an dieser Stelle davon aus, dass ihr mit dem eigentlichen kompilieren und installieren von Source-Code vertraut seid. Falls nicht, lest ihr das bitte im entprechenden Source-Code-HOWTO nach.

Als allererstes benötigen wir einen kleinen Arbeitsbereich, im folgenden Beispiel verwende ich /tmp/build. Natürlich ist auch jeder andere Ordner gültig, so lange er nur leer ist.

mkdir /tmp/build

Wenn wir selbst kompilierte Software benutzen wollen, müssen wir deren Tarball ebenfalls entpacken, z.B. in /usr/local/src

cd /usr/local/src

tar xvzf /pfad/zu/foo-0.1.tar.gz

cd foo-0.1

An dieser Stelle wäre nur das übliche ./configure && make && make install an der Reihe. Bitte nicht so voreilig, hier setzt der erste wichtige Schritt ein. Im folgenden Beispiel gehe ich davon aus, dass ihr das ./configure-Script ohne zusätzliche Parameter startet, da dieses eh immer variert. Solltet ihr welche benötigen - rein damit.

./configure --prefix=/usr

Damit wird eigentlich nur bestimmt, dass die Software vom Wurzelverzeichniss aus installiert werden soll. Wenn ihr eigene Programme lieber in /usr/local habt, soll das euch überlassen sein. Das ganze hat aber einen kleinen Nachteil, welcher aber von eurer persönlichen Partitionsordnung abhängt. Details dazu im Partitons-HOWTO.

Man kann dieses auch weglassen. Falls das Makefile die DESTDIR Variable unterstützt. Die Meisten Gnu-Tools tun dies, manche nicht. Am besten Ihr sucht mit grep danach :

grep DESTDIR Makefile

Kommen wir zum nächsten Schritt:

make

Dieser wird wie gehabt ausgeführt, ohne zusätzliche Parameter, er hat mit der eigentlichen Installation schliesslich nichts zu tun. Sobald dieser Vorgang (fehlerfrei) abgeschlossen wurde, kommen wir zum interessanten Teil.

make install prefix=/tmp/build

Falls das Makefile die Variable DESTDIR unterstützt gebt ihr folgendes ein:

make install DESTDIR=/tmp/build

Mit dieser Anweisung haben wir das Kopieren in den Verzeichnissbaum entscheidend umgelenkt. Sämtliche Dateien sind jetzt im Ordner /tmp/build/ gelandet und bilden dort den normalen Verzeichnissbaum nach. Wichtig dabei ist, das sie eigentlich davon nichts mitgekriegt haben. Sollten bei der Installation Symlinks angelegt worden sein, zeigen sie auf die selbe Stelle, an die sie spa:ter zeigen sollen - na:mlich nicht innerhalb von /tmp/build, sondern auf den entprechenden Platz im Root.

Weiter im Konzept, wir haben ja immer noch kein Packet. Wechselt als nächstes in euer Arbeitsverzeichniss:

cd /tmp/build

Hier sollte nun euer frisch angelegter Ordner namens /usr liegen. An dieser Stelle mu:sst ihr selbst entscheiden, ob ihr nur ein schnelles Packet zum Eigengebrauch anlegen wollt, oder ein etwas "schöner" gestaltetes. Ich werde zuerst den quick-and-dirty-Schritt erklären, etwas weiter ins Detail gehen wir danach.

makepkg foo-1.0-`uname -m`-1nick.tgz

Sollten nun 1-2 Fragen auftauchen, beantwortet ihr diese mit ja. Fertig. Euer Packet liegt in /tmp/build, es muss nur noch eingespielt werden und ein wenig aufgeräumt werden. Euer Arbeitsverzeichniss sollte danach wieder leer sein, ansonsten bekommt ihr spätestens beim nächsten mal ein Problem.

Zum Dateiname nach makepkg: "foo" wäre der Name und "1.0" die Version des "verpackten" Programms. Der Teil "`uname -m`" wird automatisch mit dem "Prozessor-Typ" (z.B. i686) ersetzt. Das "1nick" ist in Original-Paketen als Revisions-Nummer gedacht. Bei selbstgemachten Paketen ist es sinnvoll, der Revisionsnummer auch deinen Nicknamen, oder die Initialen des Paketerstellers, anzuhängen. Format ist also immer:

$NAME-$VERSION-$PROZESSOR-$REVISION.tgz



Erstellen von Beschreibungen


Die Orginalversion des Textes hier zu finden : http://www.slackforum.de/forum/index.php?t=msg&th=896

Falls Ihr eine Beschreibung für das Paket hinzufügen wollt, erstellt im /tmp/build einen neuen Ordner mit dem Namen install. In diesem Ordner muss die Datei slack-desc erstellt werden.

cd /tmp/build

mkdir install

cd install

vim slack-desc

Damit die Beschreibungen korrekt angezeigt werden, müssen einige Formatierungen beachtet werden: Jede Zeile muss mit dem "ersten" Teil des Paketnamens beginnen. Nach dem Doppelpunkt muss eine Leerzeile stehen auch wenn kein Text eingegeben wird:

Wennpaketname z.B superpaket-1.0.1-athlon-1.tgz ist

dann muss jede zeile so aussehen:

superpaket: Beschreibung,bla,blabla

Die erste Zeile wird als Kurzinfo in Kpackage oder pkgtool angezeigt.

Maximal dürfen nur 11 Zeilen untereinander stehen. Nach den Doppelpunkt ( superpaket : ) sollten nur 70 Zeichen für die Beschreibung in einer Zeile verwendet werden. Sonst funktioniert das ganze nicht. Hier ein Beispiel für den Inhalt einer slack-desc :

http://darkstar.ist.utl.pt/slackware/slackware_source/a/pkgtools/slack-desc



Pakage Tools


gnome-pkgtool
spkg
slacktrack
slaktool Slaktool
SlackIns!
SlackMan
slapt-get
slackpkg slackpkg
slack-get
PKGsummon
slackselect

Kategorien
CategoryTutorials
Valid XHTML :: Valid CSS: :: Powered by WikkaWiki