|
Software unter Linux zu installieren war lange Zeit nicht sehr komfortabel. Mittlerweile gibt es aber Verfahren, mit der sich diese Arbeit so einfach durchführen lässt wie unter Windows. Wahrscheinlich noch einfacher. Dieser Umstand ist den so genannten Paketmanagern zu verdanken, welche in diesem Beitrag genauer behandelt werden.
Um grundelgende Fehler von vorne herein zu unterbinden, solltet man als erstes einige Punkte überprüfen.
-
Ist das Programm evtl. schon installiert? Bei verschiedenen Distributionen wird von vorne herein schon vieles mitinstalliert!
-
Ist das Programm für meine Distribution verfügbar? Wenn ein Programm auf Distribution A läuft, heißt es noch nicht, dass es auch auf Distribution B läuft!
-
Welche Installationsverfahren bietet mir meine Distribution? Habe ich einen Software- oder Paketmanager den ich nutzen kann?
Viele Programme unter Linux setzten für ihren Einsatz das Vorhandensein von verschiedenen Bibliotheken oder anderer Software (teilweise mit Mindest-Versionsstatus) voraus, bzw. bieten erst bei deren Vorhandensein ihren vollen Funktionsumfang. Die verschiedenen Installationsarten bieten teilweise komplette Abhängigkeitsprüfungen an und empfehlen automatisch die Installation der fehlenden Bibliotheken oder Programme, bzw. führen sie direkt selbstständig durch. Aus diesem Grund ist die folgende Reihenfolge bei der Auswahl der Installationsart ratsam:
-
Softwaremanager einer Distribution nutzen (falls X-Window System)
-
Paketmanager einer Distribution nutzen
-
Source Code verwenden und manuell kompilieren (Quelltext in ausführbaren Binär Code umwandeln)
Der Begriff Softwaremanager bietet eigentlich keine genaue Definition. Allgemein versteht man darunter grafische Frontends für Paketmanager unter einem X-Window System (KDE oder GNOME). Vertreter dieser Programme sind beispielweise der SUSE Softwaremanager (YaST) oder Synaptic. Da sie die Bedienung der Paketmanager auf Konsolenebene nur noch weiter vereinfachen, wird hier auch nicht weiter auf sie eingegangen. Zur Definition eines Pakets ist zu sagen, dass ein Paket eine Software oder eine Sammlung an Software ist, die bereits für die jeweilige Distribution, Distributionsversion und Rechnerarchitektur in Binärcode übersetzt wurde, also direkt lauffähig ist.
Linux selbst, als distributionsunabhängiges Betriebssystem betrachtet, bringt keine eigenen Methoden zur Verwaltung von Software mit sich. Neue Software wird aus dem Quelltext heraus kompiliert und installiert. Eine rudimentäre Protokollierung des Vorgangs ist zwar möglich, eine einheitliche Instanz zur Verwaltung der Software wird nicht bereitgestellt. Aus diesem Grund wurden verschiedene Paketmanager entwickelt, welche die Aufgabe der einheitlichen Verwaltungsinstanz übernehmen und dabei mehrere Kernaufgaben übernehmen:
- Installation/Deinstallation von Software
- Aktuallisierung von Software
- Führen einer Datenbank mit Softwareinformationen (Installationsort, Versionsnummer, etc.)
- Ermittlung von Bezugsquellen für Software (Netzwerk, Speichermedien, etc.)
Die bereits erwähnte Funktion der Abhängigkeitsprüfung bieten zwar auch alle Paketmanager, nicht jedoch die Fähigkeit fehlende Abhängigkeiten automatisch nachzuladen.
Zur Veranschaulichung für Abhängigkeiten hier mal die erforderliche Zusatzsoftware für das Soft-Raid Verwaltungstool mdadm unter der Distribution Debian 5 (Lenny):
Paket: mdadm (2.6.7.2-3)
hängt ab von: debconf (>= 1.4.72) Debians Konfiguration-Verwaltungssystem
libc6 (>= 2.7-1) [nicht alpha, ia64] GNU C-Bibliothek: Dynamische Bibliotheken auch ein virtuelles Paket, bereitgestellt durch libc6-udeb
libc6.1 (>= 2.7-1) [alpha, ia64] GNU C-Bibliothek: Dynamische Bibliotheken, auch ein virtuelles Paket, bereitgestellt durch libc6.1-udeb
libgcc1 (>= 1.4.3) [armel] GCC Support-Bibliothek
lsb-base (>= 3.1-6) Linux Standard Base 3.2 Init-Skript-Funktionalität
udev /dev/- und hotplug-Verwaltungsdaemon
Neben dem Mindest-Versionsstatus ist ggf. noch das jeweilige Paket beschrieben, welches die Software enthält. Beispielsweise wird die Bibliothek libc6 durch die Installation des Pakets libc6-udeb im System bereitgestellt. Diese Tatsache führt allerdings gleichzeitig zu einer weiteren Erkenntnis. Oft werden unnötig viele Pakete mit installiert, nur um an eine bestimmte Software zu gelangen. Für Systeme denen wenig Speicherplatz zur Verfügung steht, ist ein Paketmanager mit Abhängigkeitsprüfung also nicht immer die erste Wahl.
Die Informationen welche zusätzliche Software benötigt wird, liefert das jeweilige Programmpaket mit. Die Abhängigkeitsroutine des Paketmanagers, soweit vorhanden(!), übernimmt nun diese Informationen und beschafft weitere erforderliche Software aus den verfügbaren Bezugsquellen automatisch. Bezugsquellen können online (Internetserver) oder offline (lokale Laufwerke) sein. Erste Anlaufstellen für Online Bezugsquellen sind die Server der jeweilgen Distribution und für Offline Bezugsquellen das Installationsmedium.
Zur Orientierung nun eine Übersicht über weit verbreitete Paketmanager, auf welchen Distributionen sie bevorzugt eingesetzt werden, der Fähigkeit der Abhängigkeitsprüfung und ob sie fehlende Abhängigkeiten automatisch beschaffen können:
| Paketmanager |
Distribution |
Abhängikeitsprüfung |
Nachladen |
Anmerkung |
| pkgtools |
Slackware |
Ja |
Nein |
Slackware verzichtet auf die Abhängigkeitsprüfung zugunsten der Flexibilität und speicheroptimierteren Installation
|
| dpkg |
Debian |
Ja |
Nein |
Einfach gehaltener Paketmanager der primär für die Installation lokaler Pakete verwendet wird
|
| apt |
Debian |
Ja |
Ja |
Frontend für dpkg |
| rpm |
Red Hat, SuSE |
Ja |
Nein |
Verbreitetster Paketmanager mit vielen Softwarequellen im Internet, von wo man sich die Pakete manuell herunterladen kann
|
| yum |
Red Hat, Fedora |
Ja |
Ja |
Frontend für yum
|
Einige Paketmanager sind auch auf anderen als den bevorzugten Distributionen nutzbar. Der Paketmanager rpm ist ein weit verbreiteter Vertreter dieser Klasse. Allerdings sollte man nicht anfangen verschiedene Paketmanager parallel zu nutzen, da dies zu Inkonsistenzen in den Datenbanken der jeweilgen Paketmanager führt. So kann es dazu kommen, dass ein mit rpm zu installierendes Paket die Installation auf einer Slackware Distribution verweigert, weil angeblich diverse Abhängigkeiten nicht installiert sind. Da der rpm-Paketmanager aber nur seine eigene Datenbank für diese Infromation heranzieht, muss diese Meldung keineswegs den Tatsachen entsprechen.
Sollte man dennoch einmal gezwungen sein auf ein Paket eines anderen Managers zurückzugreifen, gibt es diverse Tools welche die Pakete konvertieren können, so dass man sie anschließend mit dem bevorzugten Paketmanager installieren kann. Ein Vertreter dieser Tools ist Alien. Weiterführender Link
Ergänzend zur obigen Übersicht eine kleine Befehlsreferenz der angesprochenen Paketmanager, samt Anmerkungen. Dabei sei im Vorfeld auf den Unterschied Dateiname und Paketname hingewiesen. Der Paketname ist der, mit dem ein Paket im Paketmanager geführt wird. Der Paketname ist aber nicht immer der gleiche wie der Dateiname! (z.B. Paketname: mdadm, Dateiname: mdadm-2.6.7.2-3.rpm)
-- pkgtools --
Aktion
|
Kommando |
Anmerkung |
| Paket installieren |
installpkg Dateiname.tgz |
Nur von lokalen Medien möglich |
| Paket deinstallieren |
removepkg Paketname |
|
| Paket aktualisieren |
upgradepkg Paketname_alt%Paketname_update |
|
| Paket suchen |
pkgtool 1)
|
Online über http://packages.slackware.it |
1) Das Programm pkgtools selbst ist eine minimalistische GUI über welche die verfügbaren Pakete der aktuellen Version von Slackware auf dem Installationsmedium durchforstet werden können. Alternativ lassen sich damit auch alle anderen Aktionen durchführen.
-- dpkg --
Aktion
|
Kommando |
Anmerkung |
| Paket installieren |
dpkg -i Dateiname.deb |
Nur von lokalen Medien möglich |
| Paket deinstallieren |
dpkg -r Dateiname.deb |
|
| Paket aktualisieren |
dpkg --update-avail Paketname |
|
| Paket suchen |
dpkg-query -l 'Suchbegriff ' |
Online über http://www.debian.org/distrib/packages 2) |
2) Pakete werden manuell als Dateiname.deb auf einen lokalen Datenträger geladen und manuell installiert.
-- apt -- (Frontend für dpkg)
Aktion
|
Kommando |
Anmerkung |
| Paket installieren |
apt-get install Paketname
|
Lokales Paket (*.deb) nur indirekt installierbar 3) |
| Paket deinstallieren |
apt-get remove Paketname |
|
| Paket aktualisieren |
apt-get upgrade Paketname
|
|
| Paket suchen |
apt-cache search 'Suchbegriff ' |
Suchquellen werden über die Repositories definiert
|
3) Mit apt sind lokale Pakete im Format Dateiname.deb nicht direkt installierbar. Der Paketmanager apt kann nur auf Bezugsquellen zurückgreifen, die in der Datei /etc/apt/sources.list definiert wurden. Dort allerdings ist ein Verweis auf einen lokalen Ordner zulässig, worüber ein Paket dann doch installiert werden kann. Änderungen in der sources.list müssen zwingend über den Befehl apt-cache update bekannt gegeben werden.
-- rpm --
Aktion
|
Kommando |
Anmerkung |
| Paket installieren |
rpm -i Dateiname.rpm
|
|
| Paket deinstallieren |
rpm -e Paketname |
|
| Paket aktualisieren |
rpm -U Dateiname_update.rpm
|
|
| Paket suchen |
rpm -qa |grep -i 'Suchbegriff ' 4) |
Online über http://www.rpmseek.com/index.html
|
4) Nur für installierte Pakete nutzbar. Neue Pakete werden manuell online bezogen und manuell installiert.
-- yum -- (Frontend für rpm)
Aktion
|
Kommando |
Anmerkung |
| Paket installieren |
yuminstall Paketname
|
|
| Paket deinstallieren |
yum remove Paketname |
|
| Paket aktualisieren |
yum upgrade Paketname
|
|
| Paket suchen |
yum search 'Suchbegriff '
|
Suchquellen werden über die Repositories definiert 5)
|
5) Der Paketmanager yum arbeit wie apt mit Repositories. Diese werden hier allerdings über die Datei /etc/yum.conf und erweitert mit Bezugsquellen in /etc/yum.repos.d/ definiert.
|