2012年1月14日

Haskell 環境の確認

昨年末に安定版がリリースされていましたので、 Haskell Platform を更新しておきます。 主に自分用のメモ書きです。

手元のマシンは Mac OSX Lion です。 下記のリンクから適当なインストーラーパッケージをダウンロードして インストールしておきます。

  • The Haskell Platform - hackage.haskell.org
    • Current stable release: 2011.4.0.0 (December 2011)
    • Next release: May 2012

Haskell Platform に関してはこちらの記事が参考になります。

現在のバージョンを確認する

uninstall-hs コマンドでシステムにインストールされているバージョンを確認できます。

$ uninstall-hs
-- Versions found on this system
7.0.3
7.0.4
-- To remove a version and all earlier: uninstall-hs thru VERSION
-- To remove only a single version:     uninstall-hs only VERSION

ふたつのバージョンがインストールされています。 古い方はいらないので、 only でバージョンを指定します。

$ uninstall-hs only 7.0.3
-- Would remove just version 7.0.3
/Library/Frameworks/GHC.framework/Versions/7.0.3-i386
/Library/Haskell/ghc-7.0.3
/usr/bin/ghc-7.0.3@ -> /Library/Frameworks/GHC.framework/Versions/7.0.3-i386/usr/bin/ghc-7.0.3
/usr/bin/ghc-pkg-7.0.3@ -> /Library/Frameworks/GHC.framework/Versions/7.0.3-i386/usr/bin/ghc-pkg-7.0.3
/usr/bin/ghci-7.0.3@ -> /Library/Frameworks/GHC.framework/Versions/7.0.3-i386/usr/bin/ghci-7.0.3
/usr/bin/haddock-ghc-7.0.3@ -> /Library/Frameworks/GHC.framework/Versions/7.0.3-i386/usr/bin/haddock-ghc-7.0.3
-- To actually remove these files, sudo run the command again with --remove
-- To generate a script to remove these files, run the command again with --script

何が削除されるかを確認してくれました。

実際に削除する

実際に削除するには sudo を使って --remove オプションを付けます。

$ sudo uninstall-hs --remove only 7.0.3
Password:
-- Removing just version 7.0.3

もう一度 uninstall-hs コマンドを使うと、削除されたことを確認できます。

$ uninstall-hs
-- Versions found on this system
7.0.4
-- To remove a version and all earlier: uninstall-hs thru VERSION
-- To remove only a single version:     uninstall-hs only VERSION

実際、ファイルシステムからも削除されています。

$ ls -l /Library/Frameworks/GHC.framework/Versions/
total 8
drwxr-xr-x  5 root     admin  170 Dec  6 12:01 7.0.4-x86_64/
lrwxr-xr-x  1 shigeru  wheel   12 Jan  6 07:51 Current@ -> 7.0.4-x86_64

パッケージの一覧を表示する

ghc-pkg コマンドでパッケージの一覧を確認します。

$ ghc-pkg list
/Library/Frameworks/GHC.framework/Versions/7.0.4-x86_64/usr/lib/ghc-7.0.4/package.conf.d
   Cabal-1.10.2.0
   GLUT-2.1.2.1
   HTTP-4000.1.2
   HUnit-1.2.4.2
   OpenGL-2.2.3.0
   QuickCheck-2.4.1.1
   array-0.3.0.2
   base-4.3.1.0
   bin-package-db-0.0.0.0
   bytestring-0.9.1.10
   cgi-3001.1.7.4
   containers-0.4.0.0
   deepseq-1.1.0.2
   directory-1.1.0.0
   extensible-exceptions-0.1.1.2
   ffi-1.0
   fgl-5.4.2.4
   filepath-1.2.0.0
   ghc-7.0.4
   ghc-binary-0.5.0.2
   ghc-prim-0.2.0.0
   haskell-platform-2011.3.0.0
   haskell-src-1.0.1.4
   haskell2010-1.0.0.0
   haskell98-1.1.0.1
   hpc-0.5.0.6
   html-1.0.1.2
   integer-gmp-0.2.0.3
   mtl-2.0.1.0
   network-2.3.0.5
   old-locale-1.0.0.2
   old-time-1.0.0.6
   parallel-3.1.0.1
   parsec-3.1.1
   pretty-1.0.1.2
   process-1.0.1.5
   random-1.0.0.3
   regex-base-0.93.2
   regex-compat-0.95.1
   regex-posix-0.95.1
   rts-1.0
   stm-2.2.0.1
   syb-0.3.3
   template-haskell-2.5.0.0
   text-0.11.1.5
   time-1.2.0.3
   transformers-0.2.2.0
   unix-2.4.2.0
   xhtml-3000.2.0.4
   zlib-0.5.3.1

utf8-string がありません。 以前のマシンでは macport で用意しましたが、 新しいバージョンでは必要ないそうです。

追加パッケージをインストールする

Haskell のパッケージは HackageDB で管理されています。

パッケージの管理には Cabal を使います。

とりあえず cabal コマンドを実行してみます。

$ cabal

**********************************************************************


=== Configuration for cabal has been written to
    /Users/shigeru/.cabal/config

=== Executables will be installed in:
    /Users/shigeru/Library/Haskell/bin

    You may wish to place this on your PATH by adding the following
    line to your ~/.bash_profile:

    export PATH="$HOME/Library/Haskell/bin:$PATH"

=== When documentation is built, a master index to all documentation
    will be placed in:

    /Users/shigeru/Library/Haskell/doc/index.html

    You may wish to bookmark that file once it gets built (after the
    first cabal install).

**********************************************************************

Downloading the latest package list from hackage.haskell.org
cabal: no command given (try --help)

設定ファイルが生成され、パッケージの一覧が更新されました。

インストールしてみる

CSV を処理するモジュールを探します。

$ cabal list csv
* bytestring-csv
    Synopsis: Parse CSV formatted data efficiently
    Default available version: 0.1.2
    Installed versions: [ Not installed ]
    Homepage: http://code.haskell.org/~dons/code/bytestring-csv
    License:  BSD3

* csv
    Synopsis: CSV loader and dumper
    Default available version: 0.1.2
    Installed versions: [ Not installed ]
    License:  MIT

* csv-enumerator
    Synopsis: A flexible, fast, enumerator-based CSV parser library for Haskell.
    Default available version: 0.10.1.0
    Installed versions: [ Not installed ]
    Homepage: http://github.com/ozataman/csv-enumerator
    License:  BSD3

* cursedcsv
    Synopsis: Terminal tool for viewing tabular data
    Default available version: 0.1
    Installed versions: [ Unknown ]
    License:  BSD3

csv-enumerator をインストールします。まずは --dry-run オプションで確認。

$ cabal install csv-enumerator --dry-run
Resolving dependencies...
In order, the following would be installed (use -v for more details):
attoparsec-0.10.1.0
enumerator-0.4.17
attoparsec-enumerator-0.3
safe-0.3.3
unix-compat-0.3.0.1
csv-enumerator-0.10.1.0

依存ライブラリがいくつかあるようです。

実際にインストールします。ログは長いので省略します。

$ cabal install csv-enumerator

(ログ省略)

ドキュメントも更新されていますので確認しましょう。

$ open /Users/shigeru/Library/Haskell/doc/index.html

終わりに

去年は Haskell を書こうと思いつつも全然書いていませんでしたので、 とりあえず環境を更新して、今年は何とか継続したいなぁ、と。

コメントを投稿