Software aus dem Quelltext Installieren/Deinstallieren

Aus Linupedia.org
Wechseln zu: Navigation, Suche

Konsole

Software aus dem Quelltext Installieren/Deinstallieren

Wie installiere ich Software aus dem Quelltext?
Wie entferne ich selbst kompilierte Software wieder?

Allgemeines

Um Programme unter Linux aus dem Quelltext zu installieren, müssen zunächst die entsprechenden Compiler-Werkzeuge installiert werden.

Compiler: gcc
Werkzeuge: make, automake, autoconf

Bei den Paketmanagern der meisten Distributionen sind diese Entwicklertools bereits unter einer Paketgruppe bzw. einem virtuellen Paket zusammengefasst um eine einfache Installation zu ermöglichen.

SuSE Linux:

  • YAST starten
  • Kategorie: Software
  • Punkt: Software installieren oder löschen
  • Filter: Selektionen
  • Gruppe: C/C++ Compiler und Werkzeuge

=> Übernehmen

Debian GNU/Linux:

apt-get install build-essential


Zusätzlich sollten natürlich noch die für das zu installierende Programm benötigten *-devel Pakete installiert werden.
Meist finden sich auf der Projekt/Hersteller Seite Hinweise oder eine Übersicht, der zum Übersetzen benötigten Pakete.
Spätestens der Aufruf von configure sollte dann darüber Aufschluss geben. ;-)

Installation

Zuerst muss der Quellcode des zu installierenden Programms heruntergeladen werden.
Dieser liegt in der Regel als tar-Archiv, dass mit gzip oder bzip2 komprimiert wurde, vor.
Die Dateiendungen für diese Archive sind: *.tar.gz, *.tgz oder *.tar.bz2.

Dann legt man sich am Besten ein eigenes Verzeichnis für das Übersetzen an:

mkdir -p /tmp/programm

Dann in das Verzeichnis wechseln:

cd /tmp/programm

Und das Paket mit dem Quellcode herunterladen:
wget ist der Downloadmanager für die Konsole.
Mit der Option c kann der Download im Fall eines Abbruchs wiederaufgenommen werden.

wget -c <URL>

Anschließend das Archiv entpacken:
x weist tar an, das Paket zu entpacken
j um bzip2-Archive zu entpacken
oder: z um gzip-Archive zu entpacken
v für eine ausführliche Ausgabe (Optional)
f als letzte Option bezeichnet die zu entpackende Datei

tar -xjvf <Paket>

Das Archiv wird in der Regel in ein eigenes Unterverzeichnis entpackt.

cd <Paket-Verzeichnis>


Achtung!
An dieser Stelle empfiehlt es sich unbedingt einen Blick in die, den meisten Archiven beiliegende, README oder INSTALL Datei zu werfen!
In dieser befinden sich unter Umständen wichtige Informationen, Hinweise oder eine Anleitung zur Installation des Programms.

Den meisten Paketen liegt ein configure-Script bei, dass die Paketabhängigkeiten überprüft.
Also zuerst einmal

./configure --help

ausführen, um sich die verfügbaren Optionen für dieses Paket anzeigen zu lassen.
Anschließend der eigentliche Aufruf von configure:
z.B. mit der Option prefix (empfohlen) - Installiert das Programm unterhalb von /usr/local
(die Bibliotheken in /usr/local/lib, die Binaries in /usr/local/bin, ...)

./configure --prefix=/usr/local


Achtung!
ermöglicht der Aufruf von make distclean die Kompilierung des Programms für andere Systeme. Falls configure mit einem Fehler abbricht, bedeutet dies meistens, dass wichtige Pakete/Bibliotheken zum Übersetzen des Programms fehlen.
In der Regel, kann dies mit dem Nachhinstallieren der entsprechenden *-devel Pakete behoben werden.
Danach wieder configure starten, bis keine Fehler mehr auftauchen.

Anschließend starten wir den eigentlichen Kompiliervorgang:

make

Achtung!
Falls während des Übersetzens Fehler auftreten kann dies diverse Ursachen haben:
z.B. fehlende Abhängigkeiten die von configure nicht berücksichtigt wurden, Fehler im Quellcode, falsche Kompilerversion, ...
Ein allgemeines Vorgehen an dieser Stelle gibt es nicht.
Eine Suche nach der Fehlermeldung bei Google, in Fachforen oder im Linux-Club ;-) kann dabei helfen.

Für das Posten in Foren gilt:
Folgende Angaben sollten gemacht werden:

  • Name und Version der verwendeten Distribution
  • Name und Version des Programms (inklusive Quelle/Link zum Download)
  • Die letzten 10-15 Zeilen vor der ersten auftretenden Fehlermeldung posten
  • Die bei configure verwendeten Optionen
  • Compilerversion


Wenn der Aufruf von make erfolgreich war, kann die eigentliche Installation durchgeführt werden.
Bisher wurden noch keine Veränderungen am System vorgenommen.
Für den nächsten Schritt werden Systemverwalterrechte (root-Rechte) benötigt, um die gerade übersetzten Dateien in die entsprechenden Ordner im Dateisystem zu kopieren.

su -
<Eingabe des root-Passwortes>
make install

Wichtig! Anstatt make install sollte unbedingt checkinstall (Verfügbar für Slackware sowie alle rpm- und Debianbasierte Distributionen) verwendet werden.
Siehe Variante checkinstall.

Um den Installationsvorgang sauber abzuschließen sollte im Quellverzeichnis noch ein

make clean

ausgeführt werden.
Damit werden die gerade übersetzten Programmdateien wieder entfernt.
Um auch die vom configure-Skript erstellten Dateien zu löschen, bedarf es des Aufrufs von

make distclean

Dieses Aufräumen ist nicht zwingend notwendig.
Allerdings ermöglicht der Aufruf von make distclean die Kompilierung des Programms für andere Systeme.

Variante checkinstall

Das Programm checkinstall ermöglicht es Pakete aus dem Quellcode zu installieren ohne dabei die Paketverwaltung der jeweiligen Distribution zu übergehen.
Dabei protokolliert checkinstall den Installationsvorgang und generiert nach dem erfolgreichen Durchlauf von make install ein distributionsspezifisches Paket, installiert dieses dann mit der jeweiligen Paketverwaltung und hinterlässt eine Kopie des Pakets im aktuellen Quellverzeichnis oder am standardmäßigen Speicherort der benutzten Distribution.
Diese Kopie lässt sich dann in der Regel auch, unter Berücksichtigung etwaiger Paketabhängigkeiten, auf anderen Maschinen im Netzwerk installieren, ohne jedesmal aufs Neue kompilieren zu müssen.

Die Installation erfolgt analog zu dem unter Installation erläuterten Ablauf - bis zu dem Punkt an dem die Programmdateien mittels make install ins System kopiert werden sollten.
An dieser Stelle kommt checkinstall ins Spiel und ersetzt make install durch den Befehl checkinstall.
Die beiden anderen Kommandos bleiben davon unberührt und werden, ihrem Zweck entsprechend, weiterhin wie gewohnt genutzt.
Die Befehlsfolge unter Verwendung des Tools CheckInstall lautet also wie folgt:

./configure --prefix=/usr/local
make
checkinstall

checkinstall fragt daraufhin, ob für das Paket eine Documentation erstellt werden soll sowie nach einer Beschreibung für das zu ertstellende Paket und bietet die Möglichkeit verschiedene Paketinformationen (Name, Version, Beschreibung, Kategorie, ...) zu verändern.
Nach der Bestätigung dieser Abfragen erstellt checkinstall das Paket und zeigt nach erfolgreichem Abschluss Informationen über Installation/Deinstallation sowie Speicherort des Pakets an.

Anmerkung:
Manchmal kann es vorkommen, dass checkinstall trotz erfolgreichem Kompiliervorgang beim Erstellen des Pakets abbricht.
An dieser Stelle hilft ein Aufruf von

make install

mit anschließendem

checkinstall

Bei der Installation des erstelleten Pakets werden die mit make install installierten Dateien dann wieder überschrieben und ordnungsgemäß in der Paketdatenbank eingetragen, so dass das Programm später trotzdem problemlos über die Paketverwaltung entfernt werden kann.

Deinstallation

Die Deinstallation von Programmen die aus dem Quellcode kompiliert/installiert wurden gestaltet sich schwierig.
Die meisten Programme bestehen aus vielen Einzeldateien (Bibliotheken, Binaries, Dokumentation, ...), die alle in die entsprechenden Verzeichnisse kopiert wurden (*/lib, */bin, */shrare, */share/doc).
Aus diesem Grund empfiehlt es sich eine Installationsart zu wählen, die später eine möglichst einfache Deinstallation des Programms ermöglicht.
z.B. die Verwendung von checkinstall
Sollte dies nicht der Fall gewesen sein, müssen alle alle installierten Dateien von Hand gelöscht werden:
Um zu rekonstruieren, welche Dateien mit diesem Programm installiert wurden, empfiehlt es sich die Installation zu wiederholen:
Als prefix verwendet man (neben den außerdem benutzten configure-Optionen) das tmp-Verzeichnis.
Zusammenfassung:

./configure --prefix=/tmp/programm
make
make install

Im Verzeichnis /tmp/programm erhält man nun eine Abbildung der Struktur des /usr bzw. /usr/local Verzeichnisses mit allen von dem Programm installierten Dateien.
Dieses Verzeichnis kann man jetzt mit dem (bei der Erstinstallation verwendeten) Systemverzeichnis vergleichen und die zu dem Programm gehörigen Dateien löschen.
Nachteil: Evtuelle Paketabhängigkeiten von anderen Paketen können dabei ebenfalls gelöscht werden.

Links

http://asic-linux.com.mx/~izto/checkinstall/
http://www.linuxwiki.org/CheckInstall
http://www.tldp.org/linuxfocus/Deutsch/December2004/article360.shtml


Originalhowtos:
checkinstall (admine), Programme unter SuSE Linux deinstallieren (admine)



zurück zu Konsole