Facebook hat sein Build-Tool Buck als Open Source veröffentlicht. Das Tool hat gewisse Ähnlichkeiten mit dem bei Google verwendeten Cloud-Basierten Buildsystem. Während es bei Buck keine Cloud mit verteiltem Dateisesystem gibt, sind die ähnlichkeiten doch groß. Die Konfigurationsdateien heißen bei Google BUILD
, während sie bei Facebook BUCK
heißen, die Syntax ist aber identisch. Auch bei den Features sind die Tools ähnlich, nur dass Buck halt auf meinem kleinen Rechner zu Hause laufen kann.
Ich habe das Tool mal ausprobiert und beschreibe hier meine Erlebnisse. Ausgehend von einem neuen Benutzer auf GitHub, auf einem System auf dem ich kein Root-Zugang habe und der Java-Compiler veraltet ist, sind einige Härtefälle enthalten
Auf der Installationsseite von Facebook sind die drei Schritte, die benötigt werden, angegeben:
git clone git@github.com:facebook/buck.git cd buck ant sudo ln-s ${PWD}/bin/buck /usr/bin/buck$
Wenn ihr Root-Zugang zu eurem System habt und die benötigte Software auf dem neuesten Stand ist, müsst ihr erstmal nicht weiterlesen
GitHub-Account erstellen
Zunächst benötigt man einen GitHub-Account und ssh-Schlüssel, wie hier beschrieben.
Falls schon ein ssh-Schlüssel erstellt worden ist, liegt er in ~/.ssh/id_rsa.pub
. Falls die datei nicht vorhanden ist, muss ein Schlüssel erstellt werden:
ssh-keygen -t rsa -C "mail@gmail.com"
Wenn man einfach Enter
drückt, landet der Schlüssel im obigen Verzeichnis, man kann das hier aber ändern. Zum entschlüsseln des ssh-Schlüssels wird ein Passwort benötigt. Es gelten wie immer die gleichen Sicherheitsregeln.
Anschließend wird der Speicherort des Schlüssels und der Fingerprint angezeigt.
Den exakten Inhalt der Datei ~/.ssh/id_rsa.pub
, die den öffentlichen Schlüssel enthält muss gleich bei GitHub eingegeben werden.
Erstellt einen (kostenlosen) Account bei GitHub und loggt euch ein. Wenn ihr einen Gravatar-Account habt, ist euer Avatar auch bereits eingestellt
Klickt nun auf Account Settings
(oben rechts, neben dem Ausgang) und dann im Menü links auf SSH Keys
. Klickt auf Add SSH Key
und gebt den Inhalt der Datei mit dem öffentlichen Schlüssel ein. Am Besten per Copy & Paste ^^
Zurück an der Kommandozeile könnt ihr testen, ob alles soweit gefunzt hat:
ssh -T git@github.com
Der Schlüssel von GitHub ist noch unbekannt, ihr müsst ihn nun verifizieren. Der Fingerprint ist 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48
. Falls ihr keine Lust auf den Test habt, kommt die Abfrage des Keys gleich beim Holen der Buck-Daten aus dem Repository.
Buck installieren
Nun können wir nochmal versuchen, den Buck-Quellcode runterzuladen. Wir können das in einem Verzeichnis unserer Wahl machen (ich wähle das Verzeichnis /local/programs
als Basis:
cd /local/programs git clone git@github.com:facebook/buck.git cd buck ant
Zumindest die ersten drei Schritte sollten nun ohne Probleme funktionieren.
Falls eure Java-Installation up-to-date ist, klappt alles, ansonsten gibt ant eine Fehlermeldung aus.
Es kann verschiedene Fehlermeldungen geben, je nach aktueller Java-Version. Eine Möglichkeit ist Unrecognized option: -Werror
, die von einem veralteten javac
ausgegeben wird.
Java 1.5 genügt nicht, ich hab das Oracle JDK 1.7 genutzt. Wie es mit 1.6 aussieht, weiß ich nicht. Das JDK müsst ihr irgendwo installieren und den Pfad in der Umgebungsvariable JAVA_HOME
setzen, dann wird die neue Version automatisch von ant benutzt:
export JAVA_HOME=/local/programs/jdk/
Ein neuer Versuch, buck zu kompilieren sollte nun erfolgreich sein.
Buck im System einbinden
Wenn man Root-Zugriff hat, kann man nun einfach einen symbolischen Link auf buck anlegen:
sudo ln -s /local/programs/buck/bin/buck /usr/bin/buck
Ohne Root-Zugriff kann man zum Beispiel den Pfad erweitern:
export PATH=$PATH:/local/programs/buck/bin
Die Zeile kann man bei Bedarf in die .bashrc
einfügen, so dass buck bei jedem Systemstart verfügbar ist.
Nun sollte Buck erfolgreich eingerichtet sein und funktionieren Ein erstes Beispiel (zur Android-Programmierung) gibts bei Facebook. Sobald ich es für Java ausprobiert habe, werde ich hier einen weiteren Beitrag dazu schreiben.