最近Haskellに興味を持ち始めたので、さくらのレンタルサーバーに入れてみました。
環境構築といってもとりあえずGHC(Glasgow Haskell Compiler)を入れるだけです。
ソースダウンロード
さくらのレンタルサーバーはFreeBSDなので、それ用のソースをとってきます。
ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386
複数バージョンのソースが置いてあるのですが、現在のOSバージョンを確認します。
% uname -a FreeBSD www1152.sakura.ne.jp 7.1-RELEASE-p8 FreeBSD 7.1-RELEASE-p8 #6: Mon Oct 5 17:36:52 JST 2009 root@www200.sakura.ne.jp:/usr/obj/usr/src/sys/SAKURA11S i386
packages-7-stableを落とすことにします。
% wget ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-7-stable/haskell/ghc-6.10.4_2.tbz
GHCのインストール
pkg_addコマンドを使ってインストールします。
% pkg_add -f -P ~/local ghc-6.10.4_2.tbz
いつものように~/local配下に展開したいので-Pオプションで指定します。
が、いくつかエラーを吐きました。
pkg_add: could not find package gmp-5.0.1 (proceeding anyway) pkg_add: could not find package perl-5.10.1_2 (proceeding anyway) pkg_add: not running as root - trying to record install anyway mkdir: /var/db/pkg/ghc-6.10.4_2: Permission denied pkg_add: can't record package into '/var/db/pkg/ghc-6.10.4_2', you're on your own
まずgmpが入ってないとのことなので入れてみます。
% wget ftp://ftp.gmplib.org/pub/gmp-5.0.1/gmp-5.0.1.tar.gz % ./configure --prefix=~/local % make % make install
あとLD_LIBRARY_PATH等を指定してない場合は.zshrcなり.bashrcなりに書いてやります。
% export LD_LIBRARY_PATH=~/local/lib % export LD_RUN_PATH=~/local/lib
これでgmpのインストールはおk。
でも再度GHCのインストールを実行してもエラーは消えませんでした('〜`)
~/local配下にghc関連のファイルが展開されていたのでとりあえず続けることに。
ghcはrootでのインストールを前提としてるらしく、吐き出されたファイル内に直接/usr/local/binとかが書かれているので環境に合わせてsedコマンドで置換してやります。
% sed -i -e 's/\/usr\/local/\/home\/ユーザー名\/local/g' /home/ユーザー名/local/bin/ghc % sed -i -e 's/\/usr\/local/\/home\/ユーザー名\/local/g' /home/ユーザー名/local/bin/ghci % sed -i -e 's/\/usr\/local/\/home\/ユーザー名\/local/g' /home/ユーザー名/local/lib/ghc-6.10.4/package.conf % sed -i -e 's/\/usr\/local/\/home\/ユーザー名\/local/g' /home/ユーザー名/local/bin/ghc-6.10.4 % sed -i -e 's/\/usr\/local/\/home\/ユーザー名\/local/g' /home/ユーザー名/local/bin/ghc-pkg % sed -i -e 's/\/usr\/local/\/home\/ユーザー名\/local/g' /home/ユーザー名/local/bin/ghc-pkg-6.10.4 % sed -i -e 's/\/usr\/local/\/home\/ユーザー名\/local/g' /home/ユーザー名/local/bin/hsc2hs % sed -i -e 's/\/usr\/local/\/home\/ユーザー名\/local/g' /home/ユーザー名/local/bin/runghc % sed -i -e 's/\/usr\/local/\/home\/ユーザー名\/local/g' /home/ユーザー名/local/bin/runhaskell
この際、ghc-eのように-eのついたファイルが出来ますがスルーでいいです。
これで一通り大丈夫なはずなのでghcをインタラクティブモードで動かしてみます。
% ghci GHCi, version 6.10.4: http://www.haskell.org/ghc/ :? for help Loading package ghc-prim ... linking ... done. Loading package integer ... linking ... done. Loading package base ... linking ... done. Prelude>
おkですね。HelloWorldしてみましょう。
Prelude> putStrLn "Hello World" Hello World Prelude>
今度は.hsファイルに書き込んでmakeして実行してみます。
% vi hello.hs </pre> <pre class="code"> main = putStrLn "Hello, World!"
% ghc --make hello.hs % ./hello Hello, World!
インストールは問題なくできてるようですね。
インタラクティブモードからファイルを読み込んで実行もできたりするので初めのうちはインタラクティブモードで色々いじってみると楽しいかもしれません。
とりあえずのhaskellの練習にはcodeforcesの過去問とかがいいかもしれませんね。私はそれでちょっとやってみようと思います。