Manchmal ergeben sich im IT-Umfeld merkwürdige Aufgaben – beispielsweise wenn eine Anwendung, die selbst erheblich neuer ist, als das Betriebssystem auf dem sie kompiliert und installiert werden soll, unter einem entsprechenden System lauffähig gemacht werden soll.
Wie kann nun vorgegangen werden, um einen relativ aktuellen HAProxy auf SLES 10 zu kompilieren und zu installieren?
Im ersten Schritt wird der Quelltext heruntergeladen und entpackt sowie in das entsprechende Verzeichnis gewechselt:
wget http://www.haproxy.org/download/2.0/src/haproxy-2.0.32.tar.gz
tar -xf haproxy-2.0.32.tar.gz
cd haproxy-2.0.32
Hier wird explizit HTTP ohne SSL/TLS verwendet, da die notwendige TLS-Version, um mit SLES 10 zu funktionieren, ohnehin nicht mehr seitens des haproxy.org angeboten wird.
Im nächsten Schritt wird bereits kompiliert, hierbei setzen wir mindestens 3 zusätzliche Optionen um eine Kompilierung auf SLES 10 zu ermöglichen. Auf die Optionen gehe ich nachfolgend ein.
make TARGET=linux-glibc-legacy USE_MY_ACCEPT4=1 USE_MY_SPLICE=1
Die Optionen haben hier spezifische Bedeutung für den Erfolg beim Kompilieren unter SLES 10. Grund dafür ist, dass SLES 10 ansich bereits 16 Jahre alt und die darin verwendete glibc-Version 2.4 bereits 17 Jahre alt ist. Bestimmte Bestandteile, die erst in neueren glibc-Versionen hinzukamen, fehlen hierbei. Unter anderem die Syscalls accept4() und splice(). Um diese zur Verfügung zu stellen, muss also auf eine Implementation aus den HAProxy-Quelldateien zurückgegriffen werden, was mittels der angegebenen Optionen erfolgt.
So lässt sich HAProxy 2.0/2.1 auch noch unter SLES 10 kompilieren und nutzen. Nach erfolgter Kompilierung kann im aktuellen Verzeichnis mittels
./haproxy -vv
geprüft werden, ob das haproxy-Binary funktioniert.
Anschließend kann das Binary frei verwendet werden um mittels „make install“ entweder installiert oder direkt (mit einer entsprechenden Konfigurationsdatei) verwendet zu werden.