PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Slackware Package Managment



yusuf75
14.03.04, 11:33
Slackware benutzt ein eigenes Paket-Managment. Es sind die .tgz files.
Das Slackware Package Managment berücksichtigt keine Abhängigkeiten, fehlende libs usw. werden also erst zur Laufzeit des Programmes festgestellt. Das ist aber nicht immer ein Nachteil.
Das Slackware Package Managment unterscheidet sich doch deutlich von den anderen Paket-Managern wie rpm's oder deb's. Deswegen diese FAQ.

!! Ich werde hier dieses FAQ im laufe der zeit immer mehr erweitern, bitte hier nichts posten sondern eine PM an mich schicken. !!!

Inhalt
1. .tgz Pakete installieren und upgrades durchführen
2. .tgz Pakete deinstallieren
3. .tgz Pakete selbst schnüren mit makepgk
4. pkgtool ein weiteres Slackware Tool
5. weitere Tools für das Slackware Package Managment

yusuf75
14.03.04, 11:52
1. .tgz Pakete installieren mit installpkg und upgradepkg

Fertige Slackware Pakete zum herunterladen gibt es hier :
www.slackware.com/packages
www.linuxpackages.net


Das installieren der Slackware Pakete gestaltet sich sehr einfach mit dem Slackware-Tool installpkg :
( Es sind immer Root-Rechte erforderlich)

installpkg xxxxxx.tgz

Ab und zu kommt es vor das man z.B. wenn man mit einer Rettungs-CD oder ähnliches startet, die Pakete aber nicht im aktuellen Wurzelverzeichniss sondern wo anders installiert sein sollen.

installpkg -root /mnt/irgendwas

installpkg unterstützt natürlich auch das installieren mehrere .tgz-Pakete in einem Rutsch:

installpkg *.tgz

-------------------------------------------------------------------------------------------------------
Es existiert mit upgradepkg ein Tool, welches dem Admin ermöglicht upgrades durchzuführen.
Dieses gestaltet sich zwar relativ einfach aber es gibt einiges zu beachten.

Ein installiertes Paket soll durch ein aktuelles Paket ersetzt werden :

upgradepkg xxxxxx.tgz


Falls mehrere Pakete in einem Rutsch installiert werden bietet sich folgendes an:
Der Schalter --install-new sorgt dafür das auch nicht auf dem System installierte pakete installiert werden.

upgradepkg --install-new *.tgz


Wichtige Infos !

alle aktionen von installpkg und upgradepkg werden unter /var/log/packages protokolliert.
Für jedes installierte Paket wird eine Textdatei angelegt. In den Textdateien sind dann unter anderem die Orte der kopierten und angelegten Files festgehalten.
Dies hat den Vorteil das man z.B. eigene Abfragen mittels grep und find usw. machen kann.

yusuf75
14.03.04, 12:03
2. .tgz Pakete deinstallieren

Installierte Slackware Pakete wird man mit removepkg wieder los, dafür gibt es mehrere Möglichkeiten:

removepkg xxxx-1.0-i386-1.tgz
oder
removepkg xxxx-1.0-i386-1
oder
removepkg xxxx.tgz
oder
removepkg xxxx

Unter /var/log/packages werden die Logs der installierten Dateien nach /var/log/removed_packages
geschoben. Man sieht dann da welche Dateien gelöscht wurden, falls es Probleme geben sollte.

yusuf75
14.03.04, 12:51
3. .tgz Pakete selbst schnüren mit makepgk


Ich gehe hier von zwei Szenarien aus :
1.Man installiert Dateien aus Sourcen und möchte dann ein .tgz Paket erhalten

2.Man hat Binäre Dateien ( z.B tar.gz welche nicht in .tgz Form vorliegen ), es können auch Dateien jeder anderen Art sein.

1. .tgz Pakete erstellen aus Sourcen
Ich gehe an dieser Stelle davon aus das ihr mit dem eigentlich kompilieren und installieren von Source-Code vertraut seit. Falls nicht, lest ihr das bitte im entprechenden Source-Code-HOWTO nach.

Wir benötigen einen Arbeitsbereich auf der HD , ich verwende /home/xxx/tmp/build. Natürlich
ist auch jeder andere Ordner gültig, er muss nur leer sein. ( Wichtig LEER !! )

mkdir /home/xxx/tmp/build

Wenn wir selbst kompilierte Software benutzen wollen, muss der Tarball ebenfalls entpackt werden.

cd /home/xxx/pfad_zum_source
tar xvzf Programmname-0.1.tar.gz
cd foo-0.1

An dieser Stelle wäre nur das übliche ./configure && make && make install an der Reihe.
HIER BITTE NICHT ZU VOREILIG !!!
Im folgenden Beispiel gehe ich davon aus, das ihr das ./configure-Script ohne zusätzliche Parameter startet, da diese eh immer variert. Solltet ihr welche benötigen - rein damit.

./configure --prefix=/usr

Damit wird eigentlich nur bestimmt, das die Software vom Wurzelverzeichniss aus installiert werden soll. Wenn ihr eigene Programme lieber in /usr/local habt, soll das euch überlassen sein.

make

Sobald dieser Vorgang (fehlerfrei) abgeschlossen wurde, kommen wir zum interessanten Teil.

make install prefix=/home/xxxx/tmp/build/usr

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 später zeigen sollen - nämlich nicht innerhalb von /home/xxxx//tmp/build, sondern auf den
entprechenden Platz im Wurzelverzeichniss.

Weiter im gehts mit dem tgz-Pakete bauen , wir haben ja immer noch kein Packet. Wechselt als nächstes in euer Arbeitsverzeichniss:

cd /tmp/build

Hier sollte nun der frisch angelegter Ordner namens /usr liegen. An dieser Stelle müsst ihr selbst entscheiden,ob ihr nur ein schnelles Packet zum Eigengebrauch anlegen wollt, oder ein etwas "schöner" gestaltetes. Falls Ihr auf eine Paketbeschreibung verzichten wollt reiicht ein
makepkg foo.tgz

Sollten nun 1-2 Fragen auftauchen, beantwortet ihr diese mit ja. Fertig. Euer Packet liegt in /tmp/build, es muss nur noch mit installpkg eingespielt werden. Falls alles geklappt löscht die angelegten Build Verzeichnisse wieder damit kein Platz auf der HD verschwendet wird.

Falls euer Paket eine Beschreibung haben soll, müsst ihr neben /home/xxxx/tmp/build/usr
ein weiteres verzeichniss mit dem namen /install erstellen. Die Paketbescgreibung steht dann in einer datei namens slack-desc

mkdir /home/xxxx/tmp/build/install
cd install
vi slack-desc

Inhalt der slack-desc

foo: De erste Zeile enthält eine Kurzbeschreibung
foo: Diese Zeile bleibt leer
foo: Hier könnt ihre eure Beschreibung des paketes reinschreiben
foo: insgesamt müssen genau 11 foo:lines vorhanden sein
foo: Statt foo: nehmt ihr einfach den namen eures Pakets her
foo:
foo:
foo:
foo:
foo:
foo:

speichert das ganze ab und wechselt wieder in ein verzeichniss höher.

cd /home/xxxx/tmp/build

Nun reicht ein :
makepkg xxxxx-version-arch-nummer_des_Pakets.tgz
z.B.

makepkg xxxxx-1.0-i386-1.tgz
installpkg xxxxx-1.0-i386-1.tgz


.tgz Pakete erstellen aus Binärys oder anderen Dateien

Der Ablauf ist fast der selbe nur ohne das bauen der Sourcen.
Erstellt euch wieder ein build und install verzeichniss (für die Beschreibung).
Ausserdem müsst ihr euch überlegen wo das ganze dann auf der HD von euch landen soll.
Bei ist es /usr

mkdir /home/xxxx/tmp/build
mkdir /home/xxxx/tmp/build/install
mkdir /home/xxxx/tmp/build/usr/meinprogramm
mkdir /home/xxxx/tmp/build/usr/weitereordner

Kopiert einfach die Dateien in das /home/xxxx/tmp/build/usr/meinprogramm oder ins andere
/home/xxxx/tmp/build/usr/weitereordner ( oder jedes weitere was benötigt wird).
In das /install verzeichniss legt ihr wie oben beschrieben eure slack-desc an.

cp /pfad_zum_Programm/* /home/xxxx/usr/meinprogramm
cp /pfad_zum_Programm/* /home/xxxx/usr/weitereordner

Nun könnt ihr das Paket schnüren mit:

cd /home/xxxx/tmp/build/
makepkg xxxxxxx-1.0-i386-1.tgz

yusuf75
14.03.04, 12:58
4. pkgtool ein weiteres Slackware Tool

Kurz und knapp:
Mit pkgtool existiert ein Tool mit ncurses oberfläche welches euch erlaubt , Pakete aus verschiedenen Quellen zu installieren, installierte Pakete zu löschen, installierte Pakete anzuschauen.
Ausserdem könnt ihr mit pkgtool noch einige aus dem Installationsprozedere bekannten Scripte auzuführen.

yusuf75
14.03.04, 13:04
5. weitere Tools für das Slackware Package Managment

kpackage:
Das KDE-Tool kpackage kann auch mit Slackware-Paketen umgehen.
Mit kpackage könnt ihr Pakete installieren, löschen, informationen anschauen usw.

checkinstall:
Mit checkinstall könnt ihr auch ein paket schnüren lassen wenn ihr Programme aus den Sourcen installiert.
Allerdings rate ich euch ab z.B ein glibc Paket aus checkinstall zu bauen.
Hier ist die Methode mit makepkg einfach sicherer und man hat als Admin mehr kontrolle, weil man in der doinst.sh festlegen was passiert werden darf und was nicht.

swaret:
swaret schliesst die Lücke die Slackware Pakete haben. Es berücksichtigt die Abhängigkeiten.
Ausserdem kann man damit fehlende Pakete aus dem Internet herunterladen und installieren lassen.

slapt-get:
slapt-get ist das Slackware-pentdant von apt-get (bekannt von debian). Damit kann man schnell mal von der Kosole aus ein Programm installieren. Die Aghängigkeiten werden automatisch mitberücksichtigt und aus dem Internet heruntergeladen.

emerde:
mir emerde wird ein unter gentoo bekanntes ports-system in Slackware nachgebildet.
Aber Achtung: Als ich das ausgeführt habe blieb vom ursprünglichen Slackware fast nichts mehr übrig, ausser ein paar Dateien unter /etc.
Die Idee dahinter ist, das aus Quellcode ( Sourcen ) die Pakete gebaut werden.