18 Slackware Paketmanagement
Ein Softwarepaket ist eine installationsfertige Zusammenstellung von zusammengehörenden Programmen. Wenn man ein Quellcodearchiv herunterlädt, muss dieses per Hand konfiguriert, kompiliert und installiert werden. Bei einem Softwarepaket ist all dies bereits für Sie erledigt worden. Alles was noch zu tun bleibt, ist die Installation des Paketes. Ein anderes bequemes Feature bei der Benutzung von Softwarepaketen ist, sofern gewünscht, deren sehr einfache Deinstallation bzw. deren Upgrade. Slackware bringt bereits Programme für all Ihre Paketmanagementbedürfnisse mit. Man kann Pakete sehr einfach installieren, deinstallieren, aktualisieren, erzeugen und prüfen.
Seit RedHat den RedHat Packagemanager eingeführt hat, steht die Behauptung im Raum, dass Slackware über kein Paketmanagementtool verfüge. Dies entspricht in keiner Weise der Wahrheit. Zu Slackware gehörte bereits ein Paketmanager lange bevor es RedHat überhaupt gab. Auch wenn es nicht so üppig ausgestattet und so universell wie rpm (oder meinetwegen deb) ist, so sind das pkgtool und seine zugehörigen Programme ebenso gut für die Paketinstallation geeignet wie rpm. Die Wahrheit über pkgtool besteht nicht darin, dass es nicht existiert, sondern dass es keinerlei Abhängigkeiten überprüft.
Offensichtlich glauben aber viele in der Linux Community, dass ein Paketmanager bereits per Definition eine Abhängigkeitsprüfung enthalten muss. Dies ist stimmt so nicht, da Slackware ziemlich sicher nicht so verfährt. Das bedeutet nicht, dass Slackwarepakete keine Abhängigkeiten haben, sondern dass es nicht dem Paketmanager obliegt, diese zu prüfen. Abhängigkeiten zu verwalten ist allein dem Systemverwalter vorbehalten und so soll es bleiben.
18.1 Überblick über das Paketformat
Bevor wir uns mit den Werkzeugen befassen, sollten Sie sich mit dem Format eines Slackwarepaktes vertraut machen. In Slackware ist ein Paket einfach ein mit gzip komprimiertes tar Archiv. Die Pakete sind so aufgebaut, dass sie direkt in das Wurzelverzeichnis entpackt werden können.
Ein Paket für ein fiktives Programm könnte beispielsweise so aussehen:
./ usr/ usr/bin/ usr/bin/makehejaz usr/doc/ usr/doc/makehejaz-1.0/ usr/doc/makehejaz-1.0/COPYING usr/doc/makehejaz-1.0/README usr/man/ usr/man/man1 usr/man/man1/makehejaz.1.gz install/ install/doinst.sh
Das Paketsystem entpackt zum Installieren diese Datei in das Wurzelverzeichnis und erzeugt in der Paketdatenbank einen Eintrag, welcher den Inhalt des Paketes beschreibt, so dass es später aktualisiert oder wieder entfernt werden kann.
Man beachte das install/ Unterverzeichnis. Dies ist ein spezielles Verzeichnis, welches ein postinstall Script mit dem Namen doinst.sh enthalten kann. Wenn das Paketsystem diese Datei vorfindet, wird sie im Anschluss an die Paketinstallation ausgeführt.
Es können noch weitere Scripte in das Paket eingebettet werden, diese werden detailliert weiter unten im _Abschnitt 18.3.2_ beschrieben.