Die GNU Source Release Collection
Verwendung
Wenn man nur testen will, ob die Installation funktioniert, bietet es sich an, das Beispielprojekt GNU Hello zu compilieren:
make -C gnu/hello
Dieser Aufruf erstellt, wie Kenner von make wissen, das Standard-Target im Verzeichnis gnu/hello, in das make vorher wechselt. Die verwendeten Makefiles beruhen auf dem Bausystem gar. Dieses stellt ein komplexes Gebilde von Makefiles dar, durchaus ähnlich zu den BSD-Ports, das es letztlich ermöglicht, für jedes Projekt nur ein paar Variablen definieren zu müssen, wonach sich make um den Rest kümmert.
Im Falle von gsrc wird das Target all
erstellt, das nur vom Target build
abhängt, das seinerseits alles vom Herunterladen des Quellcodes über das Konfigurieren bis zum Compilieren durchführt.
Weil vor dem Compilieren eines Pakets auch dessen Abhängigkeiten, sofern vorhanden, compiliert und installiert werden müssen, kann es passieren, dass einem die Berechtigungen fehlen, das erzeugte Programm zu installieren. Das gleiche kann auch bei make install
passieren. In diesem Fall muss man alles als Root ausführen. Installiert man dagegen in ein Verzeichnis, das einem selbst gehört, hat man dieses Problem nicht.
Im ersten Test wurde kein Target bei Make verwendet, sondern das implizite Standard-Target, das bei gsrc, entsprechend einer alten Konvention, all
heißt. Man hätte also auch schreiben können:
make -C gnu/hello all
Die weiteren unterstützten Targets sind:
Target | Wirkung |
uninstall | Deinstalliert die Projektdateien |
clean | Löscht heruntergeladene und generierte Dateien des Projekts |
fetch | Lädt den Quellcode von einem GNU-Server herunter (Gzip-komprimiertes Tar-Archiv) |
checksum | Prüft die SHA256-Prüfsumme der heruntergeladenen Datei |
extract | Entpackt die heruntergeladene Datei |
configure | Konfiguriert das Paket automatisch |
fetch-list | Gibt Informationen über das Paket und seine Abhängigkeiten aus |
dep-list | Gibt eine Liste der Abhängigkeiten des Pakets aus |
makesums | Prüft die Signatur der heruntergeladenen Datei |
Die heruntergeladenen Dateien werden, samt SHA256-Signatur, im Verzeichnis cache abgelegt.
GNU-Entdeckungsreise
Die verfügbaren GNU-Pakete kann man sich durch das Auflisten des Verzeichnisses gnu ansehen. In Ausnahmefällen stehen auch Alpha- oder Betaversionen im Verzeichnis alpha zur Verfügung. Eine bessere Übersicht samt kurzer Beschreibung bietet allerdings die Sektion GNU im FSF-Software-Verzeichnis. Wie man sieht, ist eine ziemliche Fülle von Software vorhanden, von Bibliotheken über Kommandozeilenwerkzeuge und Compiler bis hin zu grafischen Anwendungen und Spielen.
Einige der bekannteren GNU-Pakete sind (wenn die Liste auch subjektiv ist) die Rechtschreibprüfung aspell, die Software-Konfigurationswerkzeuge autoconf/autogen/automake, die Shell Bash, der Telefonieserver Bayonne, die verteilte Versionsverwaltung Bazaar, die Klassiker Binutils, Bison und Flex für Software-Entwicklung, cfengine zur Konfigurationsverwaltung eines heterogenen Netzes, die freie Java-Laufzeitbibliothek Classpath, die allgegenwärtigen Coreutils, die Editoren Emacs, Zile, Nano und moe, die GNU Compiler Collection, der Bootloader Grub, der Flash-Player Gnash, die Statistik-Umgebung R, der PostScript-Interpreter GhostScript, die Finanzverwaltung GnuCash, die Arztpraxis-Software GNUMed, die PGP-Alternative GPG, das Krankenhaus-Informationssystem Health, glibc, die Mailinglisten-Verwaltung Mailman, die Dateimanager Midnight Commander und Nautilus, das Algebrasystem Octave, die Bibliotheken ncurses und readline.
Die Spiele sind mit GNU Chess, GNU Go, Gnubg (Backgammon), Gnushogi und vielen weiteren vertreten.
Interessanterweise ist LISP gleich mit zwei Systemen, dem ANSI-Common-Lisp-Compiler Clisp und GNU Common LISP, vertreten, die LISP-ähnliche Sprache Scheme ebenfalls mit zwei, nämlich Kawa und MIT-Scheme. Desweiteren sind Compiler bzw. Interpreter für viele weitere Sprachen vorhanden.
Auch die Desktopumgebungen Gnome und GnuStep gehören zu GNU, sind jedoch nicht in gsrc enthalten. Unter den aufgeführten Programmen befinden sich auch einige, die schon länger nicht mehr aktualisiert wurden und deren Status somit unklar ist. Andere sind offiziell eingestellt, beispielsweise GNU SQL, das eine freie SQL-Datenbank schaffen wollte, mit der Freigabe von MySQL und der Weiterentwicklung von Postgres zu PostgreSQL aber überflüssig wurde.
Fazit
GSRC ist interessant für alle, die hin und wieder aktuelle Versionen von GNU-Software benötigen und diese in ihrer Distribution nicht finden. Besonders könnte das auf die Anwender von Unternehmens-Distributionen zutreffen, die ja selten auf dem aktuellsten Stand der Entwicklung sind. Wer auf der Suche nach einem umfangreicheren Softwareangebot ist, für den ist pkgsrc vielleicht die bessere Alternative; die neuesten Versionen der GNU-Software darf man dort aber nicht in jedem Fall erwarten.
Nachteile hat gsrc allerdings auch. So arbeitet es seine Abhängigkeiten ab, unabhängig davon, was auf dem System bereits vorhanden ist. Das ist nicht immer schlecht, teilweise aber unnötige Arbeit. Dazu kommt, dass sich einige Projekte in bestimmten Umgebungen nicht compilieren lassen. Doch hier ist letztlich die Gemeinschaft gefragt, entsprechende Rückmeldungen oder Patches an die Entwickler zu liefern.