Sat May 10 01:58:20 JST 2014

Gauche (gosh) およびそれの info のビルドとインストール

gosh の組み込み関数、 aproposinfo が大変便利なんだけれど、
infoを呼ぶと、参照するだけで

gosh> info
*** ERROR: Compile Error: Compile Error: cannot find "rfc/zlib" in ("/usr/local/share/gauche-0.9/site/lib" "/usr/local/share/gauche-0.9/0.9.3.3/lib" "/usr/local/share/gauche/site/lib" "/usr/local/share/gauche/0.9/lib")
    "/usr/local/share/gauche-0.9/0.9.3.3/lib/text/info.scm":34:(define-module text.info (use srfi-1 ...

    "/usr/local/share/gauche-0.9/0.9.3.3/lib/gauche/interactive/info.scm":34:(define-module gauche.interactive.in ...

このように出る。rfc/zlibというSchemeモジュールがないという。

今まで何度もgoshをいくつものマシンにインストールしてきて、
infoが使えるようになったのは一度だけで、
それも何故使えるようになったのか理解していなかった。

たまにはちゃんとエラーメッセージを読んで解決を試みよう。

configureのメッセージ

checking for makeinfo... no

gauche-refe.info.gzを作るためにmakeinfoが必要らしい

$ sudo apt-get install makeinfo
configure: WARNING: "Can't find zlib.h so I turned off using zlib; you may want to use --with-zlib=PATH."

zlibっていうSchemeモジュールがないって言うので、Scheme側の問題かと思ってたのだけれど、 そもそも共有ヘッダファイルがないので、生成されてなかったらしい。

sudo apt-get install zlib1g-dev

このパッケージ名は自分で見つけられなかったので Ubuntuで足りないファイルがどのパッケージにあるか調べる方法Add Starmacchayoshihiro503 を参照した。

gosh> info
#<closure info>
gosh> (info 'display)
6.22.8 Output
-------------

    For the following procedures, the optional PORT argument must be an
    output port, and when omitted, the current output port is assumed.

-- Function: write obj :optional port
-- Function: display obj :optional port
           [R5RS] Produces a printable representation of an object OBJ to the

できた!

便利なrlwrap

alias f='echo this is ef'

aliasは''でくくるなりしないといけなくて、中に'を含めるのにエスケープがちょっと今の眠たい頭じゃ無理そうなので関数として

gauche() {
  rlwrap -pRED -b "'"'(){}[].,#@;|`"' -f ~/Dropbox/cympfh/.gosh_complements -q'"' -m gosh
}

aliasならば、名前と中からの呼び出しに同じ名前があっても、 関数とは違って、再帰呼び出しにはならない。 というわけで、上の関数は gosh とは異なる名前にした。

補完のためのファイルには、存在する手続きの名前を列挙するのだけど、

http://d.hatena.ne.jp/rui314/20070604/p1 には、そのためのGauche用スクリプトがあった。

でも、私は、gosh REPLから

(apropos '||)

として、出力結果をコピペして、ちょっとだけ整形してやる手間を加えた。

/dots/gosh_complements.txt