「Go」をMaxOS Xに入れてみた

既にLinux環境にインストールしてあるので別にインストールする必要はなかったんだが、面白そうなんでやってみた。

環境:MacOS 10.5.8

LinuxにインストールできたんだからMacも同じだろと思っていたんだが、やられた。まず久しぶりにMacを立ち上げたんでファームウェアのアップデートから始まった。それがね、適当にOKボタン押していたからPCがシャットダウンしたあと自動的に立ち上がるとばかり思っていたけど、いっこうに立ち上がらないし仕方ないので電源入れたら聞いた事ないようなビープ音だして、ビックリした。これは壊れたかもしれないと思ったけど起動してくれてほっとしたよ。

次に環境変数を整えて、「$HOME/.bash_profile」

export GOROOT=$HOME/go
export GOBIN=$HOME/bin
export GOARCH=386
export GOOS=darwin
export PATH=$PATH:$GOBIN

で反映。

$ source .bash_profile

この「source」コマンドよく忘れるんですよ。だからメモする。

その次に、「mercurial」をインストールするんだけど、どうやってインストールするの?と疑問がわいた。WindowsLinuxだといろいろやった事あるので問題ないんだが、わからん。調べているうちに「MacPorts(http://www.macports.org/)」ってのがあるらし、MacPortsってのはパッケージ管理システムってことみたい。詳しくはwiki(http://macwiki.sourceforge.jp/wiki/index.php/MacPorts)、Xcodeは既にインストールしてあったんで問題ないだろと思い最新版、MacPorts-1.8.1を落としてきて早速、解凍、./configure、make、やったら落ちた。

Warning: No index(es) found! Have you synced your source indexes?

意味わからんエラーが出たよ。なんで?いろいろ調べたら、最新版はXcodeのバージョンがLeopardで3.1.4以上必要。私のは、3.1.2だった残念。Xcodeのバージョンあげるのかったるいんで、それ用のMacPortsを探しました。ありましたよちゃんと(http://distfiles.macports.org/MacPorts/)、しかも「dmg」形式だったんで簡単インストール。これでやっと「mercurial」をインストールできる。

という訳で、

$ sudo port install mercurial

ちなみに何で「MacPorts」なのに「port」なんだろうね。関係ないね。で「mercurial」のインストールに異様に時間がかかった。10分前後かかったかな。遅いよ、遅い上、何か警告らしきものが表示された。

To fully complete your installation and make python 2.6 the default, please run

	sudo port install python_select  
	sudo python_select python26

んっとこれはなにかな?Pythonのバージョンが2.6じゃないってことかな?

$ python -v
...
Python 2.5.1

ん〜困ったな。試しに「hg」コマンドを実行したら動いたのでよしとする。

$ hg clone -r release https://go.googlecode.com/hg/ $GOROOT

「bison」も導入していないと思うので先にインストール。

$ sudo port install bison

「$HOME/bin」を作って「Go」のインストール

$ mkdir $HOME/bin

$ cd $GOROOT/src
$ ./all.bash

お風呂に入って来れるかな〜と思っていたけど早かった。しかもLinuxインストール時にはみられなかった

--- cd ../test
0 known bugs; 0 unexpected bugs

をみる事ができて最高です。

あとはテストするだけ!

$ vi hello.go
package main

import "fmt"

func main() {
  fmt.Printf("Hello, world.\n")
}

$ 8g hello.go
$ 8l hello.8
$ ./8.out
Hello, world.
$

おおお動いた。面白いですよね。最高です。まあ、「Go」がどこに行くかわ誰にもわかりませんけどね。