GoLang: Aktuelles Go und GoDoc mit Homebrew installieren

Ich bin in letzter Zeit ein wenig mit Go (golang.com) am experimentieren.

Da ich gerne Hombebrew verwende möchte ich hier kurz festhalten, wie man das aktuelle Go und GoDoc leicht mit Homebrew auf dem Mac installieren kann:

// alte Version entfernen
brew unlink go

// aktuellste Version installieren
brew install --devel go 

UPDATE: Leider scheint die GOROOT nicht von Homebrew angepasst zu werden. Damit es überhaupt funktioniert musste ich /usr/local/go auf die aktuelle genutzte Go Version im Cellar /usr/local/Cellar/go/1.3beta/libexec/ symlinken.

Flexibel geht das mit:

rm /usr/local/go

ln -s `l /usr/local/bin/go | awk '{ print $11 }' | sed -e 's/bin\/go/libexec/' -e 's/../\/usr\/local/'` /usr/local/go

GoDoc installieren (geht so auch mit vet)

go get code.google.com/p/go.tools/cmd/godoc
go install code.google.com/p/go.tools/cmd/godoc

GoDoc wird dabei in der $GOROOT/bin installiert. Wo das ist erfahrt ihr beim Ausführen von:

go env

Wenn Homebrew unter /usr/local/ liegt, kann man godoc mit der folgenden Zeile ins /usr/local/bin linken:

ln -s "$(go env | grep 'GOROOT' | sed s/GOROOT=\"// | sed s/\"$//)/bin/godoc" /usr/local/bin/godoc

Man sollte zusätzlich dringend die Environment "GOPATH" setzen und das darin enthaltene bin Verzeichnis an besten in den Pfad der Shell aufnehmen. Ich habe dafür folgende Zeilen in meiner .bashrc.

In gohome muss es dann die Verzeichnisse src, pkg und bin geben.

# Go Home
export GOPATH=$HOME/Documents/gohome
export PATH=$GOPATH/bin:$PATH

In gohome muss es dann die Verzeichnisse src, pkg und bin geben.

Ausserdem habe ich folgenden Eintrag in /etc/launchd.conf

setenv GOROOT /usr/local/go

Wenn es neue Go Versionen gibt muss man alle diese Schritte erneut ausführen!

Dabei ist wichtig, dass man die godoc Version unter /usr/local/bin/ vor dem Linken der neuen Version manuell löscht. Denn Homebrew installiert jede neue "devel" Version in einen eigenen Cellar!

P.S.: brew cleanup löscht keine alten --devel Versionen. Diese kann man mit brew cleanup --devel beseitigen lassen.

comments powered by Disqus