PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Installation von Software aus Quellarchiven



stefan.becker
11.09.05, 16:12
Dieses Howto lebt wie alles vom Mitmachen. Für gute Tipps/Links ist jederzeit Platz. Einfach PM an mich und das Howto wird dann erweitert.


1) Quellen und Arten von Linux-Software (http://www.linuxforen.de/forums/showpost.php?p=1226726&postcount=2)

2) Installation in Kurzform: Der 3-Satz für Fortgeschrittene (http://www.linuxforen.de/forums/showpost.php?p=1226729&postcount=3)

3) Entpacken von Archiven (http://www.linuxforen.de/forums/showpost.php?p=1226824&postcount=4)

4) Entpackt! Und dann? (http://www.linuxforen.de/forums/showpost.php?p=1226949&postcount=5)

5) Verknüpfung von Quellpaketen und Paketmanagement (http://www.linuxforen.de/forums/showpost.php?p=1226952&postcount=6)

6) Basisinstallation für das Übersetzen von Software (http://www.linuxforen.de/forums/showpost.php?p=1226963&postcount=7)

7) Tipps und Tricks (http://www.linuxforen.de/forums/showpost.php?p=1226966&postcount=8)

8) Kernel übersetzen (http://www.linuxforen.de/forums/showpost.php?p=1246827&postcount=9)

9) Howtos, E-Books (http://www.linuxforen.de/forums/showpost.php?p=1246844&postcount=10)


Changelog:
11.09.05: Howto begonnen
21.10.05: Erweiterungen
20.01.07: Links aktualisiert
01.05.07: Paco-Link (5.3)
22.03.08: Links aktualisiert
15.03.09: Links aktualisiert

stefan.becker
11.09.05, 16:13
1.1) Binärpaket <=> Quellpaket

Jetzt kommt der obligatorische Autovergleich: Der Bauplan (Quellpaket) wird durch den Automonteur (Compiler) zum fertigen Auto (Binärpaket).

Das Binärpaket entspricht in den meisten Fällen quasi dem Installer/Setp eines Windows Programmes.

Vorzuziehen ist gerade für die Anfänger das Installieren von Software in Binärform, also als compiliertes Paket. Das erspart einem die Installation der notwendigen Werkzeuge wie Compiler etc.

Ein Binärpaket sollte immer passend zur eingesetzten Distribution gewählt werden, sowohl passend zum Hersteller als auch Distribution. Ein SuSE 9.3 Paket sollte also nicht für SuSE 9.2 oder Fedora eingesetzt werden.

Die Installation von Software aus Quellarchiven sollte man nur wählen, wenn es für die benötigte Software keine (passenden) Pakete gibt. Hier müssen viele zusätzliche Entwicklerpakete installiert sein, was gerade Anfängern überfordern kann.


1.2) Paketformate

Die verbreitetesten Paketformate sind RPM, DEB und TGZ.

RPM

RPM steht für Redhat Packet Manager. Es ist das Standardformat der Distributionen Redhat, Fedora, Mandriva, SuSE u. a..

Howto zur Verwendung von RPM:
http://www.linuxforen.de/forums/showthread.php?threadid=21870

DEB

Das Kürzel DEB steht für "Debian". DEB ist das Standardformat aller Debian basierenden Distributionen wie Debian selbst, Kanotix, Ubuntu, Knoppix, Xandros u. a..

Debian Howto:
http://tldp.org/HOWTO/Debian-Binary-Package-Building-HOWTO/index.html
http://debiananwenderhandbuch.de/

TGZ bzw. TAR.GZ

TGZ steht für Tar Gnu Zip. Das sind per Tar zusammengefasste Binärverzeichnisse, mit Gnuzip gepackt. TGZ ist das Standardbinärformat von Slackware.


1.3) Installationsmedien

Der größte Teil der benötigten Software gehört bei modernen Distributionen bereits zum Standardumfang.

Je nach gewähltem Installationsprofil wird aber nicht alles installiert. Fehlt daher etwas, sollte man also erstmal auf den vorhandenen CDs/DVDs nachsehen, ob das benötigte Paket nachinstalliert werden kann.


1.4) Suche nach Paketen

Falls doch nicht auf den Datenträgern, gibt es spezielle Seiten zur Suche nach Paketen.

Hier einige Anlaufstellen, wo man einfach mal mit der Suche starten sollte:

www.rpmseek.com: RPM- und DEB-Pakete, mein Favorit.
www.rpmfind.net: nur RPM-Pakete
http://rpm.pbone.net/
http://packman.links2linux.org/: speziell für SuSE (Multimedia)
http://software.opensuse.org/search: speziell für SuSE

Die Liste ist nicht vollständig, ein Blick auf die Seite des Distributors liefert in den meisten Fällen die passenden Seiten.


1.5) Paketmanagement-Systeme

Moderne Distributionen bieten inzwischen Paketmanagement-Systeme wie z. B. "apt", "yum" oder "zypper" (Suse).

Der Vorteil solcher Systeme liegt in der Berücksichtigung von Abhängigkeiten. Bsp: Man will das Paket "kdelibs" installieren, und das braucht zusätzlich das Paket "zlib". Bei apt installiert man jetzt per "apt-get install kdelibs", dabei werden alle weiteren benötigten Pakete ebenfalls installiert.

Normalerweise wird die benötigte Software in der Regel installiert. Hier noch ein paar zusätzliche Links zum Thema:

Fedora: http://rpmfusion.org/ (Zusatzsoftware)
SuSE: http://de.opensuse.org/Zypper/Anleitung (zypper an der Kommandozeile nutzen)

Es gibt auch GUIs für diese Systeme:

Apt / Synaptic: http://www.nongnu.org/synaptic/
Yum / Yum-Extender: http://linuxwiki.de/YumEx
Zypper: Yast2 / Software / Software installieren und Community Repos einbinden

Eine gutes Howto zu diesem Thema: http://www.pc-forum24.de/linux-howtos/2301-pakete-installieren-fuer-newbies-linux-way-do.html


1.6) Paketkonvertierung

Manchmal findet man ein Paket nicht im benötigten Format. Abhilfe schafft hier "Alien", das ein RPM/DEB/TGZ-Paket in ein jeweils anderes der Formate umwandeln kann.

Homepage: http://kitenet.net/~joey/code/alien/


1.7) Allgemeine Suche nach Software

Auf der Suche nach Software sind spezielle Anwendungsdatenbanken immer die erste Anlaufstelle:

http://freshmeat.net: Ein sehr umfangreicher Katalog
http://www.pro-linux.de/cgi-bin/DBApp/check.cgi: Deutschsprachige Datenbank
http://www.kde-apps.org/: speziell für KDE-Software
http://gnomefiles.org/: speziell für Gnome/GTK-Software
http://www.gtk-apps.org/: speziell für Gnome/GTK-Software

Falls hier nichts zu finden ist: www.google.de/linux

Vergleich Windows/Linux Software

Außerdem existieren Seiten, die Windows und Linux Software für verschiedene Einsatzzwecke auflisten:

http://www.linuxappfinder.com/windows
http://www.angelfire.com/linux/liste/start.html
http://www.deshalbfrei.org/moinmoin/software_perlen

Auch das Windows=>Linux Einsteigerhowto ist eine thematisch sortierte Anlaufstelle: http://www.linuxforen.de/forums/showthread.php?threadid=105375&


1.8) Java Software

Java von SUN ist ein Zwischending zwischen Quellcode und Binärpaketen. Die Software wird über einen Interpreter zur Laufzeit übersetzt (JIT=Just In Time) und dann ausgeführt.

Zunächst muss Java selbst installiert werden, siehe hunters Java Howto:

http://www.linuxforen.de/forums/showthread.php?threadid=35241

Nach der Installation kann die Java Software ausgeführt werden. Auch das wird im Howto erklärt.


1.9) Windows Software unter Linux

http://www.linuxforen.de/forums/showpost.php?p=619242&postcount=2

stefan.becker
11.09.05, 16:13
Nach dem Entpacken eines Archives besteht die Installation bei den meisten Paketen aus der häufig als 3-Satz bezeichneten Befehlsfolge:



./configure
make
make install


Erst beim "make install" werden Root-Rechte benötigt. Also reicht zuvor ein "su - root" für das Anmelden als root. Alternativ bei Ubuntu: "sudo make install".

Diese Art der Übersetzung/Installation wird auch "GNU autoconf"-konform genannt. Es ist der Idealfall. Wenn es so nicht geht, siehe Kapitel 4).

Bedeutung der Befehle:

"configure" überprüft, ob alle Voraussetzungen für eine erfolgreiche Übersetzung vorliegen. Eventuelle Fehler werden direkt gemeldet. Zum Abschluss werden die sogenannten "Makefiles" erstellt, die Basis für den folgenden Befehl.

"make" führt die Übersetzung aus. Was übersetzt werden soll, steht in den Makefiles (sozusagen eine Arbeitsanweisung).

"make install" kopiert zuletzt die übersetzen Programme, Bibliotheken, Hilfedateien, ... in die Zielverzeichnisse.

stefan.becker
11.09.05, 18:41
Vor der Übersetzung von Software steht zumeist das Entpacken des Quelltext-Archives. Die hierbei anzuwendende Methode ist zumeist von der Dateiendung abhängig. Hier die bekanntesten Beispiele:

.gz



gunzip paketname.gz


Gnuzip: gunzip sollte zum Standardumfang der Distribution gehören. Paketname Fedora: gzip

.tar



tar xvf paketname.tar


Tar ist der Standardbefehl, um Verzeichnisse in eine Datei zu fassen. Paketname Fedora: tar

.tgz, .tar.gz



tar zxvf paketname.tgz
tar zxvf paketname.tar.gz


Kombination aus Zusammenfassung von Dateien mit "tar" und Komprimierung mit "gzip".

.bz2



bzip2 -d paketname.bz2


Bzip2 hat eine wesentlich bessere Komprimierung als gzip. Paketname Fedora: bzip2

.tar.bz2



tar jxvf paketname.tar.bz2


Kombination aus Zusammenfassung von Dateien mit "tar" und Komprimierung mit "bzip2".

.srpm, .source.rpm



rpmbuild --rebuild paketname*


Source-RPM-Pakete sind zumeist vom Distributor herausgegebene Pakete als Basis für die RPM-Pakete der Distribution. Durch obigen Befehl wird aus dem Source-Paket durch Neuübersetzung direkt das "echte" RPM-Paket installiert.

.bin

Bsp: java.bin


chmod +x java.bin
./java.bin


Das Binärarchiv (.bin) wird durch "chmod +x" ausführbar gemacht und auch direkt ausgeführt.


Diverse Formate / Entpacker

Die folgenden Formate sind im Linux Bereich nicht sehr verbreitet. Hier aber trotzdem eine Auflistung, weil man manchmal dennoch darüber stolpert:

Rar / Unrar:

Unrar gibt es als Kommandozeilenprogramm für Linux: http://www.rarlab.com
Kommandozeilenbefehl: "unrar".

Ace / Unace:

Unace gibt es als Kommandozeilenprogramm für Linux: http://www.winace.com/
Kommandozeilenbefehl: "unace".

7-Zip:

Relativ neues Format mit sehr hoher Komprimierung. Eine Linux-Version gibt es hier: http://p7zip.sourceforge.net/
Kommandozeilenbefehl: "7za".

Zip:

Auch für das alte Zip-Format gibt es mit "unzip" eine Linux-Kommandozeilenversion: http://www.info-zip.org/UnZip.html
Kommandozeilenbefehl: "unzip".

stefan.becker
11.09.05, 21:40
Hierfür gibt es leider keine allgemeingültige Vorgehensweise. Der Standardfall ist bereits als 3-Satz beschrieben.

Aufgrund der Vielzahl von Programmiersprachen, Compileren, Entwicklungstools gib es zig Vorgehensweisen.

Nach dem Entpacken sollte man daher immer die entsprechenden README- und/oder INSTALL-Texte lesen, die dem Paket beiliegen (sollten).

stefan.becker
11.09.05, 21:43
5.1) Checkinstall

Das Programm "checkinstall" ist eine ideale Verknüpung von Quellpaketen und Paketmanagement.

Homepage: http://checkinstall.izto.org/

Checkinstall wird statt "make install" aufgerufen. Der Vorgang läuft dann also so ab:



./configure
make
checkinstall


Checkinstall überwacht den Installationsvorgang. Statt einem direkten Kopieren der Daten wird ein RPM-Paket (bzw. Debian-DEB, abhängig von der Distribution) erstellt und installiert.

Vorteil: Man arbeitet nicht am Paketmanagement vorbei. Mit Hilfe der Paketverwaltung der Distribution lässt sich das Paket später wieder leicht entfernen. Das per Checkinstall installierte Paket taucht in der normalen Paketliste auf.

Gut gebrauchen lässt sich Checkinstall auch in folgender Situation: Man benötigt eine neue Version einer Software, findet aber kein passendes, fertiges Paket. Auf der anderen Seite lässt sich die Software auch nicht so einfach deinstallieren, weil andere Pakete von ihr abhängig sind. In dieser Situation einfach selbst übersetzen und per Checkinstall installieren, schon ist die neueste Version in der Paketliste.

Ein weiterer Vorteil ist, dass man die Quellen des Paketes nicht aufheben muss zur Deinstallation (siehe 7, Tipps&Tricks/make uninstall).


5.2) Gnu Stow

Homepage: http://www.gnu.org/software/stow/stow.html

Bei Stow installiert man das Quellpaket unter den prefix /usr/local/stow/paketname und dann wird das Paket von stow mittels SymLinks in den /usr/local tree installiert. Zum Deinstallieren kann stow die Symlinks automatisch wieder entfernen, und dann muss man nur noch den Ordner löschen.

Ich finde das ganz praktisch, weil die mit checkinstall installierten Pakete nicht immer mit apt-get upgrade und so kooperieren.

Tipp&Text von Oracle2025 (http://www.linuxforen.de/forums/member.php?u=7956)


5.3) Paco

http://paco.sourceforge.net/
http://www.linuxforen.de/forums/showpost.php?p=1513001&postcount=5

stefan.becker
11.09.05, 22:15
Die Basisinstallation zum Übsetzen von Software lässt sich unterteilen in Compiler, Konfigurationswerkzeuge und Devel-Pakete.

Compiler

Folgende Pakete sind der Gruppe "Compiler" zuzuordnen. Die Namen gelten für Fedora, sollten bei anderen Distributionen ähnlich sein. In Klammern jeweils Programmiersprache/Bedeutung.

- gcc (C)
- cpp (C-Präprozessor)
- gcc-c++ (C++)
- gcc-g77 (Fortran)
- gcc-gnat (Ada)
- gcc-java (Java)
- binutils
- nasm (Assembler)
- libgcc
- bison
- modutils (für Kernelübersetzung)
- libtool
- make (Das eigentliche Übersetzen)


Konfigurationswerkzeuge

- automake (automatische Erzeugung von Makefiles)
- autoconf (automatische Konfiguration von Sourcecode)


Devel-Pakete

Grundsätzlich besteht ein Quelltext aus 2 Dateien: Header und Source. Vergleichbar ist das mit einem Buch: Der Header ist das Inhaltsverzeichnis, sozusagen eine Liste der Funktionen. Der Source ist das Buch selbst, die Handlung. Devel-Pakete sind die Zusammenfassung aller Header zu einem Paket.

Wenn man eine Software übersetzt, die ein bestimmtes Paket voraussetzt, muss also auch das devel-Paket dazu installiert sein.

Bsp: Man übersetzt "Koffice". Das benötigt "kdelibs". => "kdelibs-devel" muss installiert sein.

Folgende Basispakete sind auf jeden Fall erforderlich:

- glibc, glibc-devel
- libstdc++, libstdc++-devel

Außerdem sollte der Kernel als Sourcepaket vorliegen, weil gerade für die Übersetzung von Treibern häufig darauf zugegriffen wird. Paketname: "kernel-source".

stefan.becker
11.09.05, 22:25
Wo die Befehle zum Übersetzen ausführen?

Nach dem Entpacken der Software (siehe oben) wechselt man direkt in das entpackte Verzeichnis und führt dort alle Übersetzungsbefehle aus. Bsp:


tar zxvf mozilla.tgz
cd mozilla
./configure
make
make install



Übersicht zu Configure Optionen

Eine wichtige Funktion ist eine Übersicht aller Optionen durch

./configure --help

Durch "grep" kann man die Übersicht einschränken auf Zeilen mit einem bestimmten Suchwort, z. B.

./configure --help | grep suchwort


Installationsverzeichnis

Durch

./configure --prefix=/usr/local
wird die Software in die Verzeichnisse ab "/usr/local" kopiert.

Programme kommen dadurch nach "/usr/local/bin", Bibliotheken nach "/usr/local/lib" usw.

Die Pakete der Distribution selbst werden zumeist ab "/usr" angesiedelt. Alle selbst übersetzten Programme/Bibliotheken sollte man daher für eine saubere Abtrennung auf der Basis "/usr/local" installieren.


Optionen ein/ausschalten

Falls configure ein Problem meldet, dass für ein bestimmtes Feature die Voraussetzungen nicht erfüllt sind, kann man das entsprechende Feature u. U. abschalten (=> "./configure --disable-optionsname").

Genauso lässt sich eine Option, die stanndardmäßig deaktiviert ist, u. U. per "./configure --enable-optionsname" aktivieren.

Das ganze ist natürlich abhängig von der installierten Software, siehe daher im Einzelfall per "./configure --help".


Command not found / Befehl nicht gefunden

Diese Meldung im Laufe der Übersetzung von Software deutet auf ein fehlendes Paket aus dem Bereich Compiler / Konfigurationswerkzeuge hin. Hier zunächst mal obige Listen auf Vollständigkeit prüfen. Wenn das nicht hilft, noch mal gegen die Voraussetzungen laut README/INSTALL des Paketes testen.


File not found / Datei nicht gefunden

Häufig fehlen bestimmte Devel-Pakete. Dadurch kommt es im Laufe der Übersetzung zur Fehlermeldung "File not found". In diesem Fall hilft folgende Vorgehensweise, am Beispiel der Meldung "File not found: koPicture.h"

- http://rpmseek.com aufrufen
- "Extended Seek" (Erweiterte Suche) wählen
- Im Eingabefeld "Package contains File" den Dateinamen "koPicture.h" eingeben
- Suche mit "Go" starten
- Ergebnis: Datei ist im Paket "koffice-devel", also das nachinstallieren


Hinweis auf Fehler

Neben der obligatorischen Ausgabe in der Anzeige wird zumeist beim configure-Lauf eine Logdatei "config.log" erstellt, die Hinweise auf den Fehler enthalten kann.


Neue Übersetzung starten nach Problemen

In manchen Fällen kann trotz korrektem "./configure" nicht übersetzt werden. Konnte die Ursache behoben werden, sollte man komplett neu aufsetzen. Hierzu sollten aber zuvor alle bereits übersetzten Dateien gelöscht werden:



make clean
./configure
make
make install


Abweichend davon muss in manchen Fällen "make clean" oder "make mrproper" zum Löschen eingegeben werden.

In manchen Fällen bemerkt configure bei einem neuen Lauf nicht die neu installierten Pakete. Das kann an einer Cachedatei liegen, die Ergebnisse des vorherigen Laufes speichert. Lösung: Datei löschen:

rm config.cache


Konfigurationsdateien

Die meisten Programme legen ihre Konfigurationsdateien im Verzeichnis "/etc" ab. Ein abweichendes Verzeichnis kann man durch "./configure --sysconfdir=/pad/für/datei" angeben.


Software deinstallieren

Das geht in den meisten Fällen durch folgenden Befehl im Sourceverzeichnis:



make uninstall


Daher folgt, dass man die Quellen erst dann löschen sollte, wenn man auch die Software löscht. Bei Benutzung von "Checkinstall" (5) ist das nicht nötig, weil hier über das Paketmanagement der Distribution gelöscht wird.

Will man das Programm nicht mehr einsetzen, kann man auch im Userverzeichnis nach temporären Dateien / Verzeichnissen suchen und diese löschen. Das muss man allerdings per Hand machen, dafür gibt es keinen Automatismus. Hier sollte man nach Dateien oder Verzeichnissen mit dem Programmnamen suchen, bei Mozilla z. B. "~/.mozilla" oder "~/.mozillarc".


Neuere Version installieren

Das beste ist es, vor der Installation der neuen Version die vorherige einfach zu löschen (siehe zuvor). Häufig sind Versions-Nr. in Dateinamen enthalten, und diese werden dann beim Installieren der neueren Versionen halt nicht überschrieben.

stefan.becker
21.10.05, 20:01
Zur Übersetzung / Installation eines eigenen Kernels sollten folgende Howtos weiterhelfen:

2.6:

http://www.linuxforen.de/forums/showthread.php?t=161878
http://www.thomashertweck.de/kernel26.html

2.4:

http://www.linuxforen.de/forums/showthread.php?t=20583

stefan.becker
21.10.05, 20:53
Software Building Howto:

http://tldp.org/HOWTO/Software-Building-HOWTO.html


Howtos von IBM Developerwork (Link aus altem Software Howto von Uli Evens):

http://www-128.ibm.com/developerworks/linux/