LinuxWiki > LinuxProgrammierung > SourceCodeKompilieren
Vorweg: Bitte sprich das nicht "Quellkot" aus, denn das ist altdeutsch für Durchfall. :-) Es sollte, wenn schon, wenigstens ein "ou" Übergang drin sein...
Jetzt hab ich so ein tolles Programm gefunden, welches leider in meinem Paketformat (auf den Installations-CDs, auf dem Update-Server der Distributionsfirma - z.B. SuSE) nicht erhältlich ist (das sollte man vorher unbedingt prüfen, es erspart eine MENGE Mühe, siehe PaketDateien!), und es ist noch nicht kompiliert. Mist.
Kein Mist. Vorraussetzung: Man hat den `gcc' und die diversen Tools (`make', `autoconf', etc) installiert -- alles, was man auch benötigt, um einen Kernel zu kompilieren. Dürfte kein Problem sein, die meisten Distributionen liefern den Kram so mit, daß "Installieren" der Compiler(-tools) sich wirklich auf "Klick+fertig" beschränkt (vorausgesetzt, man hat eine Cherry-Tastatur "mit Klick" :-).
In der UNIX-Welt ist es eigentlich unüblich, freie Software als binary (d.h. fertig ausführbare Programmdatei) zu verteilen. Das liegt daran, daß fast jedes UNIX -- auch Linux! -- auf mindestens 20 verschiedenen (Hardware-)Plattformen läuft, und man als Programmierer selten die Zeit, Möglichkeit und Lust hat, sämtliche Plattformen selbst zu kompilieren und konfigurieren. Und da ja sowieso (fast) jedes Programm unter der GNU Public Licence (GPL) (siehe KommerzFeindlicheLizenz) vertrieben wird und damit frei verfügbar ist, ist es dann sinnvoll, gleich den Sourcecode zu verteilen, so kann auch jeder, der Lust hat, am Code basteln und das eine oder andere Feature einbauen. Der Autor freut sich, wenn er Unterstützung bekommt! ;-)
In der Regel reicht es völlig, sich mal die `README' oder `INSTALL' Datei innerhalb des Archives durchzugucken, da steht fast immer eine sehr detaillerte Installationsanleitung drin. Es reicht allerdings fast immer auch folgendes (das sollte man vorher aber unbedingt prüfen!):
(falls vorhanden). configure guckt sich das System an und stellt bestimmte Systemvariablen fest (Prozessortyp, Kerneltyp, usw.))
Diese Datei einmal durchgucken, ob man irgendwelche Standardeinstellungen geändert haben will (siehe Anleitung in der `INSTALL' Datei) (zwischen `/opt/' und `/usr/local/' als Installationspfad läßt sich streiten)
kompiliert, erzeugt also das ausführbare Programm
kopiert Dateien an ihren Platz, fragt ggf. nach Einstellungen, ändert eigentlich nie irgend etwas anderes außerhalb des Installationsverzeichnisses (wenn, wird darauf in der `README' hingewiesen -- oder es ist ein (fieser) Bug!)
... besonders wenn mehrere Benutzer mit Deinem System arbeiten: Es ist sinnvoll, dazu siehe auch LinuxVerzeichnisstruktur, sämtliche Sourcen von Programmen, die nicht zur Distribution gehören, unterhalb z.B. von /usr/local/src/ zu installieren, und einer Gruppe von Usern (z.B. src, notfalls anlegen) Schreibzugriff auf dieses Verzeichnis zu geben. Dann macht man sämtliche Kompilationsarbeiten als ein User dieser Gruppe.
Dahinter steckt im Grunde nur eins: Ich möchte sicher sein, daß nicht schon die Kompiliation eines Programms irgendwelche Konfigurationen meines Rechners ändert. Und deshalb kompiliere ich Programme grundsätzlich in einem Account, das sonst auf fast gar nix Zugriff hat. Hier spielt die Multiuserfaehigkeit von Programmen eine Rolle: man sollte sie nutzen, wenn man schon die Chance dazu hat. :)
Einzig das make install kopiert (i.d.R.) einiges unterhalb von /usr/local/ oder /opt/, und dafür braucht man normalerweise root-Rechte, außer man "schenkt" die komplette /usr/local/ Hierarchie, außer /usr/local/sbin/ (da gehören selbstkompilierte Programme für den Systemadministrator rein), einem bestimmten (Pseudo-)User, als welcher man dann die Installationen durchführt. Das mag kompliziert klingen, so kann man aber effektiv verhindern, daß ein Programm auch nur das darf, was es können soll: Führe es unter einem Account aus, welches eben nur diese Zugriffe besitzt.
Sollte etwas nicht laufen, ist meistens irgendeine Pfadangabe in der `Makefile' kaputt oder falsch, oder es fehlt schlicht ein Paket, eine Library, oder ähnliches. Deshalb: `INSTALL' bzw. `README' genau lesen! Und wenn man ein Problem hat, und den Autor an"mailt": genaue Fehlermeldungen zitieren!
Will man die Sourcen von dem Programm sowieso erstmal auf Platte behalten, reicht (fast) immer ein make uninstall oder ähnliches (siehe Doku des Programmes). Ansonsten siehe hier: InstallierteSoftwareEntfernen.