Sourcecode/Quellcode selber compilieren

  • In der UNIX-Welt ist es eigentlich unüblich, freie Software als binary (d.h. fertig ausführbare Programmdatei) zu verteilen. Das liegt daran, dass 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) 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 die 'README' oder 'INSTALL' Datei innerhalb des Archives durchzugucken, da steht (fast) immer eine sehr detaillierte Installationsanleitung drin. Es reicht allerdings fast immer auch folgendes (das sollte man vorher aber unbedingt prüfen!): Als "user": ./configure (falls vorhanden). configure schaut sich das System an und stellt bestimmte Systemvariablen fest (Prozessortyp, Kerneltyp, usw.)) 'Makefile' Diese Datei einmal durchschauen, ob man irgendwelche Standardeinstellungen geändert haben will (siehe Anleitung in der 'INSTALL' Datei) (zwischen '/opt/' und '/usr/local/' als Installationspfad lässt sich streiten) 'make' (oder 'make all') kompiliert, erzeugt also das ausführbare Programm. Als "root": 'make install' 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!) Ein paar Tipps noch zur Sicherheit, besonders wenn mehrere Benutzer mit deinem System arbeiten: Es ist sinnvoll, dazu siehe auch "Die Verzeichnisstruktur von Linux", 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, dass nicht schon die Kompilation 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 Multiuser-fähigkeit 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 selbst-kompilierte 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, dass 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! Sauberes Entfernen von selbst kompilierten und installierten Programmen: Will man die Sourcen von dem Programm sowieso erst mal auf Platte behalten, reicht (fast) immer ein `make uninstall' oder ähnliches (siehe Doku des Programms).