Homebrewではじめる『7つの言語 7つの世界』
別名:Ruby, Io, Prolog, Scala, Erlang, Clojure, Haskell 〜7大変態言語インストール珍道記〜
かなり適当なのでそのへんご容赦を。
Homebrewのは無かったようなので。Ubuntuな方はこちらの方などご参考に。
http://blog.udzura.jp/2011/09/17/start-7languages-7weeks-with-ubuntu/
- 作者: Bruce A. Tate,まつもとゆきひろ,田和勝
- 出版社/メーカー: オーム社
- 発売日: 2011/07/23
- メディア: 単行本(ソフトカバー)
- 購入: 9人 クリック: 230回
- この商品を含むブログ (61件) を見る
実施環境
ちなみにOS等のバージョンは以下の通り
$ sw_vers -productVersion 10.6.8 # Snow Leopard $ brew --version 0.9 $ zsh --version zsh 4.3.17 (x86_64-apple-darwin10.8.0)
インストールの時間が無いという方はRubyとIo見たら後は最後のまとめまで飛んでくださっても結構じゃあないんでしょうか。
Ruby
昨今のMac OS XではXcodeを入れるとRubyも入ってくれるらしい。
$ ruby -v ruby 1.8.7 (2010-01-10 patchlevel 249) [universal-darwin10.0] $ irb -v irb 0.9.5(05/04/13)
ただどうせなら1.9.xも入れてみたいよねということでバージョン管理ツールを使って1.8.xと1.9.xを共存させてみる。
Rubyのバージョン管理ツールといえばRVMが有名らしいが最近rbenvというのがじわじわ来てるそうなのでそっちで入れてみようと思った。
$ brew install rbenv ruby-build
以下を.bash_profileもしくは.zshenvに追加(sstephenson/rbenv · GitHub)
(※僕は.zshenvをわざわざ新しく作りたくなかったので.zprofileに書いたけど)
eval "$(rbenv init -)"
2012/03/18現在どうやら1.9.3-p125が最新の様なので入れてみる
$ rbenv install 1.9.3-p125 # 少し時間が掛かる $ rbenv global 1.9.3-p125 $ ruby -v ruby 1.9.3p125 (2012-02-16 revision 34643) [x86_64-darwin10.8.0] $ which ruby /Users/xxxxx/.rbenv/shims/ruby $ which irb /Users/xxxxx/.rbenv/shims/irb $ which gem /Users/xxxxx/.rbenv/shims/gem
$ irb -v irb 0.9.6(09/06/30) $ irb irb(main):001:0> puts 'Hello' Hello => nil irb(main):002:0> exit
ふむふむ、大丈夫そう。システム標準のRubyに戻したければ
$ rbenv global system $ ruby -v ruby 1.8.7 (2010-01-10 patchlevel 249) [universal-darwin10.0]
Rubyと言えば… rubicle.net
参考:
rbenv + ruby-buildのインストール方法 - 223 Software
sstephenson/rbenv · GitHub
Io
依存パッケージ周りはうまく行ったがio本体のmakeでコケた。のでちょっと強引にだけどインストール。
まず一度失敗してるので~/Library/Caches/Homebrew/io-2011.09.12.tgzな感じでさっきDLしたIoのソースがキャッシュされている。
それを解凍して
$ cd ~/Library/Caches/Homebrew/ $ tar xzvf io-2011.09.12.tgz
するとstevedekorte-io-23afbccって感じのディレクトリが出来る。それのstevedekorte-io-23afbcc/libs/basekit/source/Common_inline.hを■【Mac】【Homebrew】Io言語のインストール - 解決編 - メモ帳に従って修正してまたtgzに固める。
$ vim ~/Library/Caches/Homebrew/stevedekorte-io-23afbcc/libs/basekit/source/Common_inline.h # 編集 $ rm io-2011.09.12.tgz # 念の為消去 $ tar zcvf io-2011.09.12.tgz stevedekorte-io-23afbcc/
このままだと
$ brew install io ==> Downloading https://github.com/stevedekorte/io/tarball/2011.09.12 Already downloaded: /Users/xxxxx/Library/Caches/Homebrew/io-2011.09.12.tgz Error: MD5 mismatch Expected: b5c4b4117e43b4bbe571e4e12018535b Got: 9452b3317d23fb2ef84e5d91e6f7001c Archive: /Users/xxxxx/Library/Caches/Homebrew/io-2011.09.12.tgz (To retry an incomplete download, remove the file above.)
と怒られるのでFormulaを編集する。
$ brew edit io # 以下のようにmd5のところを編集 # md5 'b5c4b4117e43b4bbe571e4e12018535b' # ↓ # md5 '9452b3317d23fb2ef84e5d91e6f7001c'
すると無事通るようになった。(やったー!)
$ brew install io
# 少し時間が掛かる
$ io Io 20110905 Io> "Hi" print Hi==> Hi Io> exit
うんうん。世は満足じゃ。
Prolog
上2つに予想外に手間取ってしまった。お次はProlog。brew search prologするとgnu-prologとswi-prologの2つの処理系がヒットするけど僕はちょっとヒゲモジャのあの人が苦手なのでSWI-Prologの方を入れてみる。ただこの本ではGNU Prologの方を使ってるぽいので特に理由がなければそっちを入れたほうがいいかも。
$ brew install swi-prolog
依存関係にもよるけど結構時間が掛かる。
$ swipl ?- [a, b, c] = [Head|Tail]. Head = a, Tail = [b, c]. ?- halt.
いいね!Prologは特に面白そう。
Scala
こっからの言語は大きな問題もなくすんなりインストールできたので、さっと流し見るくらいでもいいかも
$ brew install scala $ scala scala> 1 + 1 res0: Int = 2 scala> :quit
Erlang
# Compilation may take a very long time; use `brew install -v erlang` to see progress. # 超訳:コンパイルめっちゃ時間掛かるさかい、-v付けて経過見てあげてくだしゃんせ # とのこと。実際僕の環境だと十三分掛かったと出た。 $ brew install erlang
$ erl 1> 2 + 3.14. 5.140000000000001 2> [72, 97, 114, 97, 104, 101, 116, 116, 97]. "Harahetta" 3> [Ctrl-C] BREAK: (a)bort (c)ontinue (p)roc info (i)nfo (l)oaded (v)ersion (k)ill (D)b-tables (d)istribution a
うむぅ…
Clojure
$ brew install clojure clojure-contrib # If you `brew install repl` then you may find this wrapper script from MacPorts useful: # http://trac.macports.org/browser/trunk/dports/lang/clojure/files/clj-rlwrap.sh?format=txt # とか出た(意訳:オニイサンreplモ一緒ニドウネ-コノURLニreplノイイノアルヨー、replト一緒ニコノスクリプトモドウネー)ので $ brew install repl
$ clj Clojure 1.3.0 user=> (+ 4 8) 12 user=> (println "Hello Clojure!") Hello Clojure! nil user=> (. System exit 0)
Clojureと言えばこのページが最近話題になってますね。
Clojureの作者が作ったデータベースDatomicが凄い
参考:
例のあれ(仮題)- HomebrewでClojureとか入れてみた。
ClojureのREPLの終了方法 - No Programming, No Life
Haskell
ようやっと最後の言語に到達。トリを飾るは某所でC++と並びネタにされることが多いHaskell。
$ brew install ghc # 結構時間が掛かるうちの環境ではビルドに十二分掛かったとか出た。DL時間も合わせるともっとあるかも # 途中で"The 32-bit version of GHC is installed by default, as the x84_64 version is labelled experimental. Override with `--64bit`."とのメッセージが $ brew install haskell-platform # 同じく結構時間掛かってる。ビルドに十一分ほどと出た。 # 途中で"Run `cabal update` to initialize the package list."等のメッセージが出た $ cabal update
$ ghci GHCi, version 7.0.4: http://www.haskell.org/ghc/ :? for help Loading package ghc-prim ... linking ... done. Loading package integer-gmp ... linking ... done. Loading package base ... linking ... done. Loading package ffi-1.0 ... linking ... done. Prelude> let double x = x * 2 Prelude> double 100 200 Prelude> :quit
参考:
Haskell再入門 1日目(環境構築) - WebService::Blog->new( user => ’hide_o_55’ )
まとめ
ようやく終わったー!!色々やってたら4時間の長丁場になってしまった。
最初2つ結構苦戦したけど後は概ねすんなり行った感じ。なので、トラブりそうなRubyとIoのインストールが終わったら後はまとめて
$ brew install swi-prolog scala erlang clojure clojure-contrib repl ghc haskell-platoform
とかやってお布団に入るなりしてもいいかもしれない。
さて、残り少ない春休みで読み返しでもするか…