2009/10/21

悟りに近づく LiLFeS 入門 (インストール編)

また出てきた Team C# の新井です。今日は度々ネタにされる LiLFeS について書こうと思います。簡単に言うと LiLFeS は「Prolog みたいなもの」で、論理型言語の一種です。東大の研究室で開発されました。

第一回ということで、まずはインストール編です。学科で貸与されるノートパソコンには最初から Ubuntu が入っているため、Ubuntu(Debian でも殆ど同じですが)へインストールするつもりで書きます。

~$ wget http://www-tsujii.is.s.u-tokyo.ac.jp/downloads/files/lilfes/liblilfes-1.3.8.tar.gz
~$ tar xzvf liblilfes-1.3.8.tar.gz
~$ cd liblilfes-1.3.8/
~/liblilfes-1.3.8$ ./configure
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
(略)
checking for sys/ioctl.h... yes
checking util.h usability... no
checking util.h presence... no
checking for util.h... no
checking FlexLexer.h usability... no
checking FlexLexer.h presence... no
checking for FlexLexer.h... no
configure: error: Cannot find FlexLexer.h (distributed with flex 2.5.4a)
おっと、flex が必要だったようです。
~/liblilfes-1.3.8$ sudo aptitude install flex
~/liblilfes-1.3.8$ ./configure
~/liblilfes-1.3.8$ make
(略)
code.cpp:44: warning: deprecated conversion from string constant to 'char*'
code.cpp:45: warning: deprecated conversion from string constant to 'char*'
code.cpp:46: warning: deprecated conversion from string constant to 'char*'
code.cpp:47: warning: deprecated conversion from string constant to 'char*'
code.cpp:48: warning: deprecated conversion from string constant to 'char*'
code.cpp:655: warning: deprecated conversion from string constant to 'char*'
code.cpp:655: warning: deprecated conversion from string constant to 'char*'
code.cpp:655: warning: deprecated conversion from string constant to 'char*'
code.cpp:655: warning: deprecated conversion from string constant to 'char*'
code.cpp:655: warning: deprecated conversion from string constant to 'char*'
code.cpp:655: warning: deprecated conversion from string constant to 'char*'
code.cpp:655: warning: deprecated conversion from string constant to 'char*'
code.cpp:655: warning: deprecated conversion from string constant to 'char*'
code.cpp:655: warning: deprecated conversion from string constant to 'char*'
code.cpp:655: warning: deprecated conversion from string constant to 'char*'
code.cpp:655: warning: deprecated conversion from string constant to 'char*'
code.cpp:655: warning: deprecated conversion from string constant to 'char*'
code.cpp:655: warning: deprecated conversion from string constant to 'char*'
code.cpp:655: warning: deprecated conversion from string constant to 'char*'
code.cpp:655: warning: deprecated conversion from string constant to 'char*'
code.cpp:655: warning: deprecated conversion from string constant to 'char*'
code.cpp:655: warning: deprecated conversion from string constant to 'char*'
code.cpp:655: warning: deprecated conversion from string constant to 'char*'
code.cpp:655: warning: deprecated conversion from string constant to 'char*'
code.cpp:655: warning: deprecated conversion from string constant to 'char*'
code.cpp:655: warning: deprecated conversion from string constant to 'char*'
code.cpp:655: warning: deprecated conversion from string constant to 'char*'
code.cpp:655: warning: deprecated conversion from string constant to 'char*'
code.cpp:655: warning: deprecated conversion from string constant to 'char*'
code.cpp:655: warning: deprecated conversion from string constant to 'char*'
code.cpp:655: warning: deprecated conversion from string constant to 'char*'
code.cpp:655: warning: deprecated conversion from string constant to 'char*'
code.cpp:655: warning: deprecated conversion from string constant to 'char*'
code.cpp:655: warning: deprecated conversion from string constant to 'char*'
code.cpp:655: warning: deprecated conversion from string constant to 'char*'
(以下引き続き warning)
大量の warning に負けないでもう少し
~/liblilfes-1.3.8$ sudo make install
これでインストール完了です。 お決まりの Hello, world! を走らせてみましょう。
~/liblilfes-1.3.8$ lilfes
LiLFeS 1.3.8    [PROFILE] [REGEX]
Copyright (c) 1997-2006, Takaki Makino and Tsujii lab., Tokyo Univ.
> ?- print("Hello, world!").
セグメンテーション違反です
~/liblilfes-1.3.8$

(゚д゚ )

( ゚д゚ )


?- halt. でLiLFeSインタプリタを終了できます。

~/liblilfes-1.3.8$ lilfes
LiLFeS 1.3.8    [PROFILE] [REGEX]
Copyright (c) 1997-2006, Takaki Makino and Tsujii lab., Tokyo Univ.
> ?- halt.
セグメンテーション違反です
~/liblilfes-1.3.8$


確かに終了した

初回授業のあと地下へ行ってみんなでインストールして爆笑





とここでネタばらし!
実は flex パッケージではなく flex-old パッケージが必要だったのです。

地下の人が気づいて既に動かせてはいましたが、TA から連絡が来たのは数日後でしたね!

~/liblilfes-1.3.8$ sudo aptitude purge flex ← configure 辺りで指定すれば必要なかったかも
~/liblilfes-1.3.8$ sudo aptitude install flex-old
~/liblilfes-1.3.8$ ./configure
~/liblilfes-1.3.8$ make
~/liblilfes-1.3.8$ sudo make install

続きはきっと班員の誰かが書くので請うご期待

0 件のコメント:

コメントを投稿