gauche に SLIB をインストールした

trace したいと思って (use slib) したらエラーが出て,SLIB 入れてなかったことに気付いたので入れた.

前提

  • Mac mini (Mavericks)
  • Homebrew で gauche 0.9.4 をインストールしてある
    • /usr/local/bin/gosh

手順

2015/07/28時点での最新バージョンは3b5でした(The SLIB Portable Scheme Library

$ cd ~/Downloads
$ curl -O http://groups.csail.mit.edu/mac/ftpdir/scm/slib-3b5.zip
$ unzip slib-3b5.zip
$ sudo mkdir /usr/local/slib
$ cp -r slib /usr/local

trace とか使えるようにする

この時点だとまだ trace とかは使えない.

$ gosh
gosh> (use slib)
#<undef>
gosh> (require 'trace)
*** ERROR: couldn't open output file: "/usr/local/Cellar/gauche/0.9.4/share/gauche-0.9/0.9.4/lib/slibcat"
(省略)

slibcat に書き込み権限があるユーザが実行することで,一般ユーザもtraceとか使えるようになるらしい.

Gauche 0.5.3以降はmake install時にSLIBが見付けられればslibcatを 作成するようになっていますが、何らかの理由でその時点でslibcatが 作られなかった場合、SLIBは 最初にSLIBが使われる時に slibcatを 作成しようとします。ここでgauche-library-directoryが一般ユーザに 書き込み不可能になっていたりすると、上記のようなエラーが出ます。

解決法は、gauche-library-directoryに書き込みできる権限のある ユーザがgoshを走らせて、何らかのSLIBモジュールをrequireすることです。 例えば次のような式を評価すると良いでしょう。

Gauche:FAQ

ということなので,sudo gosh で対応する.

$ sudo gosh
gosh> (use slib)
#<undef>
gosh> (require 'trace)
#t

これでOK.

参考にしたサイト