Das Problem beim Kompilat mit gcc

Posted by moritz on Wednesday, July 22, 2015

Seit jeher animieren wir unsere User mit ihren Uberspaces mehr anzustellen, als out-of-the-box möglich ist und sich selbst und uns damit zu überraschen. Dazu gehört unter anderem: Installiert euch doch an Software was ihr wollt. In den allermeisten Fällen ist es gar nicht notwendig, einen root-Account zu haben, mit ein bisschen Geduld und Spucke - und wenn der Quellcode vorliegt - kann man eigentlich alles auch im Userspace installieren. Und hier gilt: Viele Wege führen nach Rom: Man kann entweder alles per Hand frickeln oder aber - wenn’s denn etwas bequemer sein soll - per toast oder brew. Wir sind der Meinung: Macht’s euch lieber bequem 🍸.

toast und brew nehmen zwar einen Großteil der Arbeit ab, eines haben sie jedoch beide mit der aufwändigeren händischen Installation gemeinsam: Alle brauchen Compiler. Natürlich haben wir auf allen Servern alles mögliche an Compilern vorinstalliert, die sind allerdings teilweise aus Gründen etwas betagt (oder wir wir eher sagen würden: gut abgehangen). Dieser Umstand ist vor allem bei gcc in letzter Zeit zum Problem geworden, da viel aktuelle Software auch einen aktuellen gcc voraussetzt. Theoretisch kann man einen aktuellen gcc-Compiler kompilieren und das Problem damit umschiffen; da gibt’s aber ein Problem.

Yo dawg I heard you like compiling.

Das Problem

Das Kompilieren von aktuellen Versionen von gcc braucht so viel Speicher, dass unser automatischer Prozesskiller (dazu zu einem anderen Zeitpunkt ein eigener Blogartikel) den Prozess zuverlässig abschießt. Den Prozesskiller können wir im Interesse aller User auf dem Server auch nicht mal eben deaktivieren oder bestimmte Prozesse davon ausnehmen. Es muss also eine andere Lösung her und hier kommt unser /package ins Spiel (auch hierzu folgt bei Zeiten noch ein eigener Blogartikel).

Die Lösung

Auf jedem Uberspace-Server liegen hier nun aktuelle Versionen von gcc (sowohl 4.9er als auch 5er), die nur darauf warten, von euch benutzt zu werden. Die 5er Version is so frisch, dass sie von brew noch nicht erkannt wird. Mit Version 4.9 klappt das aber wunderbar (ggf. müsst ihr ein paar Symlinks anlegen).

Wie das geht und was zu beachten ist steht in unserem Wiki.

Feedback ist wie immer herzlich willkommen.

Wir wünschen frohes Kompilieren!