Softwareinstallation: Unterschied zwischen den Versionen
Michi (Diskussion | Beiträge) |
Michi (Diskussion | Beiträge) |
||
Zeile 5: | Zeile 5: | ||
== Softwareinstallation aus Quellcode == | == Softwareinstallation aus Quellcode == | ||
Dafür wird üblicherweise folgendes benötigt | Dafür wird üblicherweise folgendes benötigt. | ||
{| class=wikitable | |||
| <b>C-Compiler</b> || [[gcc]] ist hier der traditionelle Standard. Als C++-Compiler kann daneben auch [[g++]] benötigt werden. | |||
|- | |||
| <b>Header-Dateien</b><br>(engl. header files, include files) || Sie enthalten [[Betriebssystem]]-Definitionen, die der C-Compiler zum [[Kompilieren]] fast jeden Programms benötigt. Normalerweise tragen sie die Dateiendung ".h". Zusätzlich zum in [[Libc]] bzw. [[Glibc]] enthaltenen Standardset werden die Kernel-Headerdateien benötigt, die mit dem Kernel-Quellcode ausgeliefert werden und sich üblicherweise unter "/usr/src/linux-<Version>/include" befinden. | |||
|- | |||
| <b>binutils</b> || Sie enthalten u. a. den Assembler ([[as]]), den Linker ([[ln]]) sowie den "library archiver" ([[ar]]). Diese Programme verarbeiten und verbinden die Ausgabe des C-Compilers um die schliesslichen Programme in Maschinencode zu erstellen. | |||
|- | |||
| <b>[[make]]</b> || Diesr Befehl überwacht das [[Kompilieren]]. Dazu sollte GNU make installiert sein, da einige "Makefiles" von seinen nichtstandardisierten Erweiterungen abhängen. | |||
| <b>[[perl]]</b> || Dieser Skriptinterpreter von vielen Konfigurationsskripten, Codegeneratoren, Parsern und ähnlichen Dienstprogrammen verwendet. | |||
|- | |||
| <b>[[X Window System]] Header Files</b> || | |||
|} | |||
Das Selberinstallieren von Software aus dem Quellcode hat Vor- und Nachteile. | Das Selberinstallieren von Software aus dem Quellcode hat Vor- und Nachteile. |
Version vom 24. Januar 2009, 20:03 Uhr
Zur Softwareinstallation wird unter Linux entweder der Quellcode (engl. source code) oder ein sogenanntes Paket (binary) benötigt. Pakete funktionieren jedoch üblicherweise nur für eine Architektur und ein Betriebssystem. Flexibler ist deshalb die Installation des Quellcodes, welche lokale Veränderungen am Programm ermöglicht und auch die Installation von Bug Fixes erlaubt.
Neue Software wird normalerweise ins Verzeichnis "/usr/local" installiert.
Softwareinstallation aus Quellcode
Dafür wird üblicherweise folgendes benötigt.
C-Compiler | gcc ist hier der traditionelle Standard. Als C++-Compiler kann daneben auch g++ benötigt werden. | ||
Header-Dateien (engl. header files, include files) |
Sie enthalten Betriebssystem-Definitionen, die der C-Compiler zum Kompilieren fast jeden Programms benötigt. Normalerweise tragen sie die Dateiendung ".h". Zusätzlich zum in Libc bzw. Glibc enthaltenen Standardset werden die Kernel-Headerdateien benötigt, die mit dem Kernel-Quellcode ausgeliefert werden und sich üblicherweise unter "/usr/src/linux-<Version>/include" befinden. | ||
binutils | Sie enthalten u. a. den Assembler (as), den Linker (ln) sowie den "library archiver" (ar). Diese Programme verarbeiten und verbinden die Ausgabe des C-Compilers um die schliesslichen Programme in Maschinencode zu erstellen. | ||
make | Diesr Befehl überwacht das Kompilieren. Dazu sollte GNU make installiert sein, da einige "Makefiles" von seinen nichtstandardisierten Erweiterungen abhängen. | perl | Dieser Skriptinterpreter von vielen Konfigurationsskripten, Codegeneratoren, Parsern und ähnlichen Dienstprogrammen verwendet. |
X Window System Header Files |
Das Selberinstallieren von Software aus dem Quellcode hat Vor- und Nachteile.
Vorteile | Nachteile |
---|---|
|
|
Vorgehen
Quellcode wird üblicherweise in komprimierter Form ("*.tar.gz", "*.tar.bz2", "*.tgz") bereitgestellt.
- Ansehen der komprimierten Quellcode-Datei ("tarball") mit "tar -tv". Der Inhalt sollte immer in ein Verzeichnis entpacken und keinesfalls Dateien enthalten, die mit einem Schrägstrich beginnen!
- Entpacken der komprimierten Quellcode-Datei mit tar.
- Ansehen der entpackten Dateien, darunter können sein:
- die Datei "README" sollte zuerst gelesen werden und beschreibt die enthaltene Software.
- die Datei "INSTALL" enthält eine Installationsanleitung.
- die Datei "Imakefile" (welche das Programm imake benutzt) ist enthalten, wenn das Paket nicht GNU autoconf benutzt.
- die Dateien "build", "compile" oder ähnliche kleine Skripte vom Softwareautor.
- C-Quelldateien haben die Endung ".c", C++-Dateien haben Endungen wie ".cc", ".C" und ".cxx". Header-Dateien für beide enden mit ".h".
- Wenn das Paket GNU autoconf verwendet, so ist wie folgt vorzugehen:
- Ausführen des Skripts "configure", das üblicherweise die Dateien "Makefile" und "config.h" erzeugt.
- Dabei kann unter anderem mit "--prefix=" angegeben werden, in welches Verzeichnis die Installation erfolgen soll.
- Ebenfalls können die Umgebungsvariablen beeinflusst werden. Normalerweise benutzt "configure" für "CFLAGS" die beiden Optionen "-g" (generate debugging information) und "-O2" (optimize 2 levels). Obwohl damit optimierter Code erzeugt wird, ensteht dabei auch überflüssiges Zeug, das mehr Festplattenplatz beansprucht als nötig. Normalerweise wird also nur die Option "-O2" benötigt. Die Option "-I" gibt das Verzeichnis an, in dem "configure" und der Compiler nach Include-Dateien suchen sollen.
- Ausführen von make zum Kompilieren des Programms.
- Testen des frisch kompilierten Programms durch einfachen Aufruf.
- Testweise Installation des Programms mit "make -n install <Programm>". Dabei wird bloss ausgegeben, was "make install" tun würde, aber es wird nichts installiert.
- Installation des Programms mit "make install".
- Ausführen des Skripts "configure", das üblicherweise die Dateien "Makefile" und "config.h" erzeugt.
SUID-Problematik
Das SUID-Flag (siehe auch Zugriffsrechte) sorgt dafür, dass Programme unter den Rechten des Besitzers und nicht unter denen des ausführenden Anwenders ablaufen. Dadurch erhalten auch unprivilegierte Benutzer vorübergehend die Rechte von Benutzer "root". Beispielsweise muss der Befehl ping besondere Pakete erzeugen, was einem unprivilegierten Benutzer normalerweise verwehrt bleibt. Daher hat der Befehl ein SUID-Flag und gehört dem Benutzer "root".
Solange die Befehle ihre ursprüngliche Funktion beibehalten, ist alles in Ordnung. Unsaubere oder bösartige Programmierung führt jedoch dazu, dass die Rechte von Benutzer "root" missbraucht werden können. Es empfiehlt sich deshalb vor der Installation die Installer-Routinen zu überprüfen.
Um den Ausführungspfad ansehen zu können, hilft es den Befehl "set -x" zu Beginn des Installationsskripts einzufügen. Danach protokolliert set alle Shellaufrufe auf der Standardausgabe.
Um auch trotz fehlender Quellen die Programmabläufe sichtbar zu machen kann das Programm strace in die Schnittstelle zwischen Userspace und Kernel geschaltet werden. strace protokolliert alle Systemaufrufe, die ein Programm auslöst. Die enstehende Logdatei muss danach betreffend Änderung der Zugriffsrechte durchsucht werden (z. B. Suche nach "chmod"). Schreibende Zugriffe in Systemverzeichnisse und Systemdateien sind dabei ebenso verdächtig wie die Zugriffsrechteänderung anderer Programme.