Category: Funtoo

Hallo zusammen,

das Gentoo/Funtoo Paket ‚media-sound/teamspeak-server-bin‘ benötigt noch MySQL 5.1; dieses ist jedoch im ebuild nicht richtig aufgelöst, so das es nicht als Installationsbedingung aufgelistet wird. Installiert man das Paket, setzt in der Datei ‚/etc/teamspeak3-server/server.conf‘ ‚dbplugin=ts3db_mysql‘ (um die Einstellungen statt in einer SQLite-DB in einer MySQL-DB zu speichern) und versucht dann den TeamSpeak3 Server zu starten, bekommt man im Log folgende Meldung:

|INFO |ServerLibPriv | | TeamSpeak 3 Server 3.0.5 (2012-04-23 04:46:12)
|INFO |DatabaseQuery | | Please make sure you use the supplied ts3server_minimal_runscript.sh to run the server, or set LD_LIBRARY_PATH yourself
|CRITICAL|DatabaseQuery | | unable to load database plugin library „libts3db_mysql.so“, halting!

LD_LIBRARY_PATH ist aber (im Init-Script) schon auf das Verzeichnis gesetzt, in welchem die Datei libts3db_mysql.so liegt: /opt/teamspeak3-server/, also was soll die Meldung?
Das ganze wird klar, wenn man sich mit ldd einmal die  shared library dependencies der Datei /opt/teamspeak3-server/libts3db_mysql.so anzeigen lässt:

ldd /opt/teamspeak3-server/libts3db_mysql.so
linux-vdso.so.1 =>  (0x00007fff4efa4000)
libmysqlclient.so.15 => not found
libstdc++.so.6 => /usr/lib/gcc/x86_64-pc-linux-gnu/4.3.4/libstdc++.so.6 (0x00007f17f2bc0000)
libm.so.6 => /lib/libm.so.6 (0x00007f17f293d000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00007f17f2727000)
libc.so.6 => /lib/libc.so.6 (0x00007f17f23ca000)
/lib64/ld-linux-x86-64.so.2 (0x00007f17f30fd000)

Es fehlt also die Datei libmysqlclient.so.15 ; diese ist jedoch leider nur in MySQL 5.1 enthalten. Nun hat man zwei Möglichkeiten:

  1. Man installiert und betreibt MySQL 5.1 . Dann löst sich das Problem ohne weiteres Zutun, jedoch finde ich es blöd sich von einem einzigen Programm eine veraltete MySQL Version aufzwingen zu lassen.
  2. Man besorgt sich die libmysqlclient.so.15.0.0 Datei von einem Build-Chain kompatiblen System (gleiche GCC Version, gleiche Arch, etc.). Das geht z.B. indem man erst MySQL in Version 5.1 installiertst, die Datei wegkopiert und wieder die MySQL Version, die man eigentlich haben möchte installiert.

Sofern man sich für Variante 2 entscheidet, kopiert man, während MySQL 5.1 installiert ist, die Datei /usr/lib64/mysql/libmysqlclient.so.15.0.0 nach /usr/local/lib/, erstellt einen Symlink von /usr/local/lib/libmysqlclient.so.15 auf /usr/local/lib/libmysqlclient.so.15.0.0 und installiert anschließend wieder die eigentliche Version von MySQL.

Hat man dieses alles erledigt, sollte sich der Teamspeak3 Server problemlos starten lassen.

Nachzulesen ist das ganze außerdem im Gentoo Forum. Auf die Idee gebracht hat mich der Blogeintrag von Alexander Winkler.

Um zu erklären, was das bedeutet, muss ich ganz kurz ausholen…

Als ich vor vielen Jahren mit Linux angefangen habe, stolperte ich ziemlich bald über Gentoo Linux. Damals konnte ich aber weder den Wert dieser Distribution ermessen, noch kam ich als absoluter Linuxeinsteiger damit zurecht. Also habe ich sie damals recht bald wieder fallen lassen.
Nachdem ich inzwischen jedoch einige Jahre mit diesem Fachgebiet auf dem Buckel habe, keimte vor ein paar Jahren das Interesse an dieser Distribution wieder auf. So läuft seit knapp 13 Monaten dieser Server auch unter Gentoo Linux.
In dieser Zeit stand ich natürlich auch ab und an mal auf dem Schlauch und musste mich, als Google, das Gentoo Forum und IRC nicht mehr helfen konnten, des Gentoo Bugtrackers bedienen. Und genau hier machte ich Erfahrungen, welche mich enttäuschten. Oft, wenn ich auf diesem Wege mit den Gentoo Entwicklern in Kontakt treten musste, wurde ich enttäuscht. So sind zwei Bugs, die ich vor fast 2 Monaten und über 4 Monaten eingetragen habe, bis heute nicht final bearbeitet und geschlossen worden. Den Vogel abgeschossen hat aber der Gentoo Bug 363675, bei dem ich über 1,5 Monate der einzige gewesen bin, der den auch nur angesehen hat. Und dabei ging es nicht etwa um irgendeinen Schönheitsfehler: Ich konnte den GNU C Compiler (gcc) nahezu garnicht mehr benutzen. Das bedeutet im Falle von Gentoo Linux, das man nahezu kein Paket mehr installieren kann. Als ob das nicht ärgerlich genug wäre: Auch Sicherheitsupdates sind so natürlich nicht mehr möglich. Als ich mir nicht mehr zu helfen wusste, habe ich dasselbe Problem im Bugtracker vom gcc direkt eingestellt. Nach sage und schreibe 3 Minuten und 42 Sekunden hat einer der dortigen Entwickler mein Problem gelöst!
Es stellte sich letzten Endes heraus, das es sich um ein lokales Problem bei mir gehandelt hatte, jedoch hat sich ja kein Mensch den Bug gründlich genug angeschaut um das wissen zu können. Wäre es ein globales Problem am gcc gewesen, wäre eine nichtbeachtung eines Bugs in dieser Kategorie fatal gewesen!
Als ich das dann im verlinktem Gentoo Bug 363675 mal so angemerkt habe, bekam ich folgende Antwort:

Mit anderen Worten also: Da Gentoo ein System von Freiwilligen ist, darf man sich nicht beschweren. Grundsätzlich natürlich richtig. Jedoch zwei Punkte dazu (was mich ganz dezent dann auch wieder zum eigentlichen Thema zurückführt 😀 ):

  1. Wenn ich das selber hätte lösen können, hätte ich wohl kaum einen Bug dazu erstellt.
  2. Ich möchte ja gerne helfen, aber die Einstiegshürde bei Gentoo ist leider sehr hoch!
Es haben sich in der jüngsten Vergangenheit mehrere Dinge ereignet bei denen ich mich frage, ob die Gentoo Foundation den Karren absichtlich an die Wand fahren will. Viele Entwickler beschwerten sich in jüngster Vergangenheit darüber, das ihnen vom Gentoo Linux Council, den Leitern und Koordinatoren also, völlig hanebüchene und fachfremde Vorgaben gemacht werden, wie Software zu entwickeln ist und wie die Workflows dazu auszusehen haben.
Das kann ich mir gut vorstellen; wie eben beschrieben scheinen die Entwickler ja mit den Anfragen völlig überfordert zu sein. … was ja nichts mit Unfähigkeit, sondern mehr mit mangelnder Organisation zu tun hat. Umso unverständlicher ist es, das Hilfsangebote am laufendem Band ausgeschlagen werden. Das sieht man besonders drastisch am Beispiel von Daniel Robbins:
Daniel Robbins hat Gentoo Linux erschaffen. Bevor er im Mai 2005 bei Microsoft anfing, gründete er die Gentoo Foundation und übergab das Projekt an diese. Die Gründe hierfür waren wohl zu gleichen Teilen, das er zum einen fürchtete sein neuer Arbeitgeber Microsoft könnte einen negativen Einfluss auf die weitere Entwicklung der Distribution haben und zum anderen wollte er mehr Zeit für seine Familie haben.
Als er dann im Februar 2007 wieder als Entwickler für Gentoo anfing, wurden ihm, als geistigem Vater der Distribution, so viele Steine in den Weg gelegt, das er bereits einen Monat später seine Arbeit an Gentoo Linux wieder einstellte und 2008 schließlich sein aktuelles Projekt initialisierte: Funtoo Linux; einen Fork von Gentoo Linux.
Inzwischen hat Funtoo viele Anhänger und ein sehr fähiges Entwicklerteam, an dessen Spitze Daniel Robbins steht, der (ähnlich zu Linus Torvalds über den Kernel) als gutmütiger Diktator die Marschrichtung der Distribution vorgibt und dessen Entwicklung koordiniert.
Noch hängen Funtoo und Gentoo zwar eng zusammen, jedoch driften (nicht zuletzt wegen größerer Fortschritte bei Funtoo) die beiden immer weiter auseinander. Wie das bei einem Fork nunmal so ist.
Ich habe mich daher dafür entschieden meine Freizeit und mein Engagement lieber in Funtoo Linux zu investieren ehe ich zunächst Monatelang den Leuten und Infos von Gentoo Linux hinterherlaufe, nur damit meine Beteiligungen dann im Sande verlaufen. Man sehe sich nur einmal den Gentoo Bug #228343 an. Da wird den Entwicklern ein nahezu fertiges TYPO3 Paket geliefert und es kümmert sich einfach keiner drum! Das Paket für TYPO3 Version 4.2.1 wurde am 19.06.2008 eingereicht. Heute, 3 Jahre und 3 Monate später, hat der Bug nach wie vor den Status „CONFIRMED“, was in etwa soviel bedeutet wie „zur Kenntnis genommen – weitere Aktionen abwarten, bis wir das geprüft haben“. Ist doch ein Scherz, oder?
Wie gesagt: Völlig überlastet und unkoordiniert das Team.
Einer der Fortschritte von Funtoo Linux ist, das der Portage Tree, das bedeutet: Das Paketverzeichnis mit allen Installationsscripten, nun nicht mehr per rsync abgeglichen, sondern in einem git Repository gepflegt wird. Das macht das ganze einfacher zu warten, es gibt automatisch ein ChangeLog und eine History und es können mehr Personen einfacher miteinander an diesem Projekt arbeiten.
Martin „golodhrim“ Scholz hat am 7. 7. 2011 mit einer super-Idee für eine neue Art des Overlays, mit dem nahezu jedermann zur Entwicklung von Funtoo beitragen kann, einen Meilenstein (in meinen Augen) für die Distribution gelegt. Inzwischen ist die Idee umgesetzt, das ganze nennt sich „flora“ und Martin Scholz wurde inzwischen von Daniel Robbins zum Core Member für die Communityentwicklung und speziell zum vorantreiben von flora ernannt.
Ich habe mich in den letzten Tagen mit der Funktionsweise und der Erstellung von (Ge|Fu)ntoo Paketen (ebuilds) beschäftigt und heute meine erste Version das TYPO3 Paketes an flora übermittelt. Martin Scholz nimmt seine Aufgabe sehr ernst und ist ungeheuer fleissig! So hat er auch nur knapp eine Stunde später meine Änderungen unverändert in flora übernommen.
Es ist zwar als PHP Paket nur ein vergleichsweise einfaches Paket, da die ganzen Kompilierungsvorgänge und was damit zusammenhängt dabei nicht berücksichtigt werden müssen, trotzdem ist es etwas völlig neues für mich. Gerade weil das vergleichweise einfach ist, bot es sich als erstes Paket besonders an. Ich hoffe, das ich mir dabei keinen groben Schnitzer erlaubt habe … nicht das ich mich bei meinem Gesellenstück gleich vor der ganzen Community blamiere … 😀
Naja, mehr als stundenlang hin-und-hertesten kann man ja nicht. Und zum Glück hat so ein PHP Paket ja in der Regel nicht das Potential irgendetwas wichtiges zu zerstören.
Ich bin mal gespannt ob, wann und wie das ganze schließlich im Portage Tree landet und ob Fehler gefunden werden.