Gentoo Linux


Gentoo Linux ist GNU/Linux Distribution. Diese Distribution ist mehr eine Metadistribution und ist (sehr) zeitaufwändig. Da Gentoo eine Metadistribution ist, ist sie an sich keine Distribution, sondern eine Ansammlung von Tools, mit denen man sich seine eigene Distribution zusammenbauen kann.

Gentoo Linux kann mit LFS (Linux from scratch) verglichen werden, denn im Gegensatz zu einer typischen Distribution hat Gentoo keine vorkompilierte Pakete (binary packages) und der Benutzer muss selber das ganze Betriebsystem vom Quellcode aus bauen, d.h. den Quellcode selber kompilieren. Das ist kein einfacher Prozess und er nimmt viel Zeit in Anspruch aber er hat auch viele Vorteile, die man mit binären Distributionen nicht hat.

Gentoo sammelt auch viele gute Ideen von anderen Unix Derivaten und ein Grund, warum Gentoo so interessant ist, ist Portage, das Package-Manager von Gentoo, das an die BSD Ports erinnert. Portage ist eine Weiterentwicklung davon, die mittlerweile in andere "Linuxe" portiert werden kann.

Warum benutze ich Gentoo

Als ich nach Deutschland zum Studieren kam, kannte ich nur Microsoft Windows, von dem ich sehr begeistert war. An der Universität und eher durch meinen Bruder habe ich meinen ersten Kontakt mit GNU/Linux gehabt. Ich hab am Anfang SuSE Linux ver. 7.3 benutzt. Nach ein Paar Monaten habe ich die Version 8.0 installiert und praktisch ein ganzes Jahr benutzt. Um Dezember 2003 unterhielt ich mich mit einem Komilliton und er erzählte mir von Gentoo und so ich hab mich daran interessiert. Ich hab eine Testinstallation gemacht, die wegen fehlender Erfahrung und Mangel an Geduld nicht geklappt hat. Da ich nicht aufgeben wollte, habe ich das nächste Mal das Handbuch genau gelesen und danach installiert und seit diesem Tag (etwa Januar 2004) bin ich ein Gentoo Benutzer und ich denke, das werde ich wohl für immer bleiben.

Gentoo ist keine einfache Distribution und wer ungeduldig ist und keine Dokumentation lesen mag, hat generell schlechte Karten gegenüber Gentoo, denn Gentoo ist eine Distribution, die einem die Arbeit nicht wegnimmt und von einem erwartet, dass man weiß, was man genau tut. Deswegen kann Gentoo für Linux Anfänger sehr frustrierend sein. Im Gegensatz dazu lernt man in kurzer Zeit verdammt viel über die Arbeitsweise eines Unix Systems und man ersteigert sich ständig, denn man ist immer mit neunen Sachen, Begriffen usw. konfrontiert, die man davor nicht kannte. Ich könnte sagen, dass alles, was ich von Unix weiß, habe ich erst mit Gentoo gelernt und erst nach meiner ersten Gentoo Installation wirklich verstanden.

Das Portage ist einer der Gründe, warum ich zu Gentoo wechselte und warum ich dabei bleibe. Portage ist für mich das beste Package-Manager. Portage ist kein Programm, dass Programme in binär Form installiert, sondern lädt den Quellcode der Programme herunter, kompiliert den Quellcode und installiert die ausführbaren Dateien in die richtigen Stellen. Paketen haben natürlich Abhängigkeiten und Portage kann diese Abhängkeiten auflösen, d.h. bevor Portage das Paket A installiert, das ein Paket B benötigt, guckt Portage, ob das Paket B vorhanden ist, und wenn nicht, wird B vor A installiert. Gentoo benutzt die Ebuilds, das sind Dateien, die die Information eines Paketes enthalten, d.h. die Abhängigkeiten und wie sie gebaut werden müssen.

Wer schon mal Gentoo benutzt hat und Programme installiert hat, wird von den USE Flags gehört haben. Die USE Flags sind eine der schönsten Eigenschaften von Gentoo. Da man die Programme selber kompiliert, hat man auch die Möglichkeit die Features der Pakete zu wählen. Zum Beispiel wenn ich weder GNOME noch KDE mag und diese auch nicht installiert habe, kann ich Programme so kompilieren, dass sie kein GNOME/KDE Support haben. Das ist logisch, dass ich das will, wozu GNOME/KDE Support haben, wenn ich kein GNOME und kein KDE habe? Das ist mit Gentoo leicht gelöst, und zwar mit den USE Flags.

Mit den USE Flags kann ich eine Menge steuern, und zwar kann ich Portage mitteilen, wie er bestimmte Pakete installieren soll, wie z.B. XMMS ohne KDE Support oder ohne arts Unterstützung. Das ist etwas ganz besonders, denn so kann sich jeder seine Programme so installieren, wie sie einem am besten passen, man kann sich dadurch ein soz. maßgeschneidertes System zusammenbauen. So etwas ist mit einer binären Distribution nicht möglich, denn bei binären Distributionen kann man die Festures eines Paketes nicht selber wählen, das hat jemand anders für Dich getan und Du kannst es nicht ändern, du musst damit Leben, dass jemand die Features für Dich wählt. Du wirst Dich wahrscheinlich fragen, warum ich deswegen so meckere, aber ein Freak wie ich möchte selbstverständlich die gesammte Kontrolle über sein System haben und das bedeutet, ich will derjenige sein, der wählt, was meine Programme können und was nicht. Ich wäre nicht zufrieden mit dem, was ein Entwickler glaubt, es wäre das beste für mich, sondern ich will es selber tun, denn nur ich weiß, was besser für mich selber ist.

Ein weiterer Pluspunkt von Gentoo ist meiner Meinung nach das Init-System, dass Gentoo anwendet. Da Gentoo ein GNU/Linux ist, hat es auch 6 verschiedenen Runlevels, die aber an sich anders behandelt werden als andere Distributionen. Die meisten Distributionen haben ein Verzeichnis /etc/init.d wo die init Skripte (meist in sh/bash geschrieben) sich befinden. Es gibt auch die /etc/rcX.d Verzeichnisse, wobei X = 1,2,3,4,5,6,S. Diese Verzeichnisse haben Symlinks zu den /etc/init.d Skripte und stellen die Runlevels dar. D.h., wenn das System in ein runlevel wechselt, dann werden diese Skripte gestartet.

Es gibt Namenskonvention, die Symlinks müssen folgenden Namen haben: SXYname, wobei XY für eine beliebige Zahl zwischen 00 und 99 steht und die Reihenfolge der Skripte festlegt. Damit ein Daemon gestartet wird, muss das Symlink mehrmals in verschiedenen rcX.d Verzeichnisse stehen. Zum Beispiel, apache2 bei einem Debian Sarge: Es gibt /etc/init.d/rc0.d/K91apache2, /etc/init.d/rc1.d/K91apache2, /etc/init.d/rc2.d/K91apache2, ..., /etc/init.d/rc6.d/K91apache2, wieso gleich 7 Mal ist mir nicht klar. All diese Dateien sind Symlinks auf /etc/init.d/apache2, womit man den Apache Server starten kann. Man sieht ganz klar, dass das sehr inefizient ist, denn man hat einen sehr großen Aufwand, wenn man die Skripte von den runlevels wegnehmen will oder gerade in die runlevels aufnehmen will. Viele Daemons haben natürlich Abhängigkeiten, d.h. sie können nur starten, wenn ein anderer Daemon gestartet ist, und Abhängigkeiten selber aufzulösen kann sehr aufwändig werden und nicht immer erfolgreich, und nicht alle Distributionen haben eigene Programme, die diese Aufgabe gut bewältigen.

Gentoo macht etwas anders. Zwar behält Gentoo die Struktur der runlevels, aber Gentoo verwaltet sie selber und stellt dem Benutzer lediglich nur 3 eigenen Runlevels zur Verfügung: boot, default, nonetwork. Man hat auch die Möglichkeit weitere eigene Runevels hinzuzufügen. In boot kommen hauptsächlich solche Skripte, die für das Booten sowie Module und Netzwerk verantwortlich sind. In default kommen die meisten Skripte, die benutzerdefinierte Applikationen starten, wie mysql oder apache2. In nonetwork ist meistens /etc/init.d/local, ein Skript welches benutzerdefinierte Befehle (konfigurierbar unter /etc/conf.d/local.{start|stop}) enthält.

Gentoo hat ein "Skriptsprache" für die Runlevels entwicklet, runscript. runscript führt alle Skripte nach bestimmten Regeln aus, somit erspart man sich die Verwendung von den /etc/rcX.d Verzeichnisse. Die Abhängigkeiten der Skripte werden direkt in den Skripten eingebaut und runscript löst die Abhängigkeiten selber auf, so dass die Skripte in der richtigen Reihenfolge gestartet werden. Somit ist es ein Kinderspiel die init Skripte zu verwalten, weil man mit einem einzigen Befehl die Skripte zu den runlevels hinzufügen oder von den runlevels wegnehmen kann, ohne dass man die Abhängigkeiten selber auflösen muss, denn diese lästige Arbeit übernimmt runscript. So genügt rc-update add apache2 default, um Apache2 zum Runlevel default hinzufügen und rc-update del apache2, um Apache2 von den Runlevels wegzunehmen. Toll ist es auch, wenn ein Benutzer vergisst, ein Skript A in ein Runlevel hinzuzufügen und ein Skript B benötigt A, so startet runscript das Skript A automatisch, bevor das Skript B gestartet wird.

Versionen

Eine der meist von Anfängern gestellten Fragen über Gentoo, ist: wann kommt Version XY endlich raus? Nun ja, die Antwort kann man eigentlich mit "niemals" beantworten. Gentoo hat kein typisches versioning system, denn Gentoo hat an sich nur 2 Zustände: stable, testing. Die Versionen werden im Portage-Tree festgelegt und diese hängen nicht von Gentoo sondern von den Entwicklern der Pakete. Der Portage-Tree ist die Datenbank mit allen Ebuilds, mit denen Portage die Pakete installieren können. Gentoo an sich hat deswegen keine Version, weil die Versionen der Pakete, die man installieren kann, vom Portage-Tree abhängt. Um den neusten Portage-Tree zu bekommen, muss man emerge --sync ausführen und um zu überprüfen, ob Pakete aktualisiert werden sollen emerge -uvpD world.

Aus diesem Grund kann man nicht wirklich sagen, welche Version ein Gentoo hat. Dazu kommt, dass der Portage-Tree 2 Branchen hat. Die stable Branche hat Paketen, die von den Gentoo Entwicklern als stabilen Versionen gesehen werden. Diese Versionen laufen in der Regel am stabilsten und können fast immer kompiliert werden, ohne dass es Probleme gibt. Die testing Branche beinhaltet die Pakete, die kürzlich zum Portage-Tree hinzugefügt wurden und nicht viel getestet wurden, auch solche Pakete, die wirklich instabil laufen und nicht ratsam ist, zu installieren. Diese Pakete sind in der Regel ein bisschen instabil, aber viele Pakete in der testing Branche haben viele Features mehr als in der stable Branche und deswegen benutzen viele Benutzer die Pakete in der testing Branche. Somit ändern sich auch die installierte Versionen, denn man kann für alle Pakete wählen, ob man die stable oder testing Version benutzt werden soll, so kommt es vor, dass die meisten Gentoo Benutzer unterschiedliche Versionen zu den selben Paketen haben.

Es gibt aber eine Version, die man Gentoo zuordnung kann, die Version des Profiles. Das Profile wird nach einem emerge --sync installiert. Das Profile ist die Grundkonfiguration für Portage, denn dort ist es enthalten, welche USE Flags standardmäßig gesetzt sind, welche Pakete maskiert sind, usw. Mmaskiert bedeutet, dass sie nicht installieren kann, bevor sie man nicht explizit unmaskiert hat, für mehr Information über Maskierung, siehe GNU/Linux » Gentoo » Gentoo issues

Gentoo Nachteile

Kein System ist perfekt, und Gentoo ebenfalls nicht, Gentoo hat noch viele Fehler, die korrigiert werden müssen, aber man arbeitet hart, um das System ständig zu verbessern. Ich habe in den letzten Absätzen Gentoo sehr gelobt, aber es gibt auch negative Punkte, die mich nerven und die einfach erwähnt werden sollten.

Portage ist wahrscheinlich der Grund für viele User Gentoo zu benutzen, aber gerade Portage weist auf viele Stellen Fehler und Mängel auf. Nicht dass diese Fehler Portage unbrauchbar machen würde, aber das sind Sachen, die beseitigt werden sollten und woran die Gentoo Entwickler hart arbeiten. Die Geschwindigkeit von Portge lässt viel zu wünschen übrig und trotz der Indizierung werden Anfragen wie emerge -s <package name> zu langsam ausgeführt. Klar gibt es Altrntiven für die Paketensuche wie app-portage/esearch, aber emerge sollte auch schnell arbeiten müssen. Das liegt daran, dass Portage tausenden von Dateien durchsuchen muss und der Portage-Tree ständig größer wird.

Da der Portage-Tree größer und größer wird, ist es für die Entwickler immer schwieriger die Ebuilds zu verwalten und pflegen, und so kommt es häufig zu Problemen, stable Versionen können nicht installiert werden, weil ein Ebuild falsch geschrieben wurde, und die Stabilität des Pakets bricht ab. In den meisten Fällen werden solche Probleme in wenigen Stunden gelöst, aber wenn man Unglück hat und gerade ein großes Update erwischt, der noch verbessert werden muss, kann es dazu führen, dass man ein Haufen geblockte Pakete bekommt, und das kann einem Administrator viel Ärger bereiten. Als Beispiel möchte ich hier die Aktualisierung vom Konfigurationslayout von Apache2 und dessen Module, was viel Ärger bereitet hat, aber in sehr kürzer Zeit ebenfalls gelöst wurde. Unter wessen idee war die config file änderung im apache?! und Gentoo Apache2 Config Change Idiocy kann dies gelesen werden.

Wenn du mehr über die Bugs von Gentoo erfahren willst, dann kannst du Bugzilla besuchen: http://bugs.gentoo.org/.

Gentoo auf Produktiv Server

Bevor man ein Gentoo auf einen produktiven Server aufsetzt, sollte man sich fragen, ob man auch die Zeit haben wird, sich wirklich zu informieren, bevor man ein Update durchführt. Denn wie ich erwähnt habe, gibt es manchmal sehr viel Ärger bei der Aktualisierung und Admins, die sich nicht vorbereiten, können eine schreckliche Überraschung erleben. Ich denke, Gentoo ist sehr wohl geeignet für einen produktiven Server, aber nur wenn der Administrator auch wirklich gut ist und sich gut mit Gentoo auskennt und die Politik von Gentoo versteht.

Man sollte immer einen Testrechner haben, wo man Update durchführen kann, um sich zu vergewissern, dass alles gut klappen wird. Das sollte bei Gentoo quasi zu einer Goldregel werden, denn damit kann man sich wirklich eine Menge Ärger ersparen.

Maskottchen

Ich weiß es nicht, welches Maskottchen nun wirklich das Gentoo Projekt hat. Alle GNU/Linux Distributionen haben irgendein Logo oder Maskottchen, meistens etwas was mit einem Pinguin zu tun hat, da ein Pinguin das offizielle Maskottchen von Linux ist. Aber ich denke, dass "Larry the Cow" unser Maskottchen ist, denn niergendswo habe ich Larry außer bei Gentoo gesehen.
Siehe http://www.gentoo.org/main/en/about.xml.

LARRY THE COW WAS A BIT FRUSTRATED AT THE CURRENT STATE OF CURRENT STATE OF LINUX DISTRIBUTIONS...
Gentoo G
...UNTIL HE TRIED GENTOO LINUX.
Larry the Cow was a bit frustraded with Linux. The latest distros seemed to be just a bunch of the same old stuff. Nothing new -- nothing innovativ. Then Larry tried Gentoo Linux. He was impressed. He found a BSD-style ports system with a bunch of advanced features. He discovered lots of up-to-date packages that could be auto-built using the optimization settings and build-time functionality thet he wanted, rather that what some distro creator thought would be the best for him. All of the sudden, Larry the Cow was in control. And he liked it.

Und das ist Larry

Larry the cow

Was ist denn Gentoo noch?

Gentoo ist der Name eine Art von Pinguine, die "Gentoo Penguine" Pygoscelis papua.
Siehe http://www.penguins.cl/gentoo-penguins.htm

Gentoo Pinguin

 

Valid XHTML 1.0 Strict   Valid CSS!