Cygwinにslをインストール

ちょっと前の話になるのだけど、id:uiureoのツイートでslの存在を知り、面白そうだと思ったのでインストールした。

方法1:自分でコンパイルする

手順:

1. Cygwinのsetup.exeを起動して以下のパッケージをインストールする。

  • wget (Web) (←必須ではない)
  • libcurses-devel (Devel)


2. 適当なフォルダをつくり、wgetでsl.tarをダウンロード・解凍

> mkdir sl
> cd sl
> wget http://www.tkl.iis.u-tokyo.ac.jp/~toyoda/sl/sl.tar
--2011-10-16 09:28:15--  http://www.tkl.iis.u-tokyo.ac.jp/~toyoda/sl/sl.tar
www.tkl.iis.u-tokyo.ac.jp (www.tkl.iis.u-tokyo.ac.jp) をDNSに問いあわせています... 157.82.157.21
www.tkl.iis.u-tokyo.ac.jp (www.tkl.iis.u-tokyo.ac.jp)|157.82.157.21|:80 に接続しています... 接続しま
した。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 20480 (20K) [application/x-tar]
`sl.tar' に保存中

100%[======================================>] 20,480      76.1K/s 時間 0.3s

2011-10-16 09:28:15 (76.1 KB/s) - `sl.tar' へ保存完了 [20480/20480]

> tar xvf sl.tar


3. make
コンパイラgccをつかうので、

make CC=gcc

とする。


そのままだとエラーが出る。

> make CC=gcc
gcc -O -o sl sl.c -lcurses -ltermcap
sl.c:30:20: fatal error: curses.h: No such file or directory
コンパイルが中断されました。
make: *** [sl] エラー 1


curses.hが/usr/include/ncursesの中に入っているせいで、sl.cからの参照がうまくいってないらしい。
ので、-Iオプションをつけた。
コマンドを次のようにして実行。

make CC=gcc CFLAGS='-O -I/usr/include/ncurses'


すると、またエラー。

> make CC=gcc CFLAGS='-O -I/usr/include/ncurses'
gcc -O -I/usr/include/ncurses -o sl sl.c -lcurses -ltermcap
/usr/lib/gcc/i686-pc-cygwin/4.5.3/../../../../i686-pc-cygwin/bin/ld: cannot find -ltermcap
collect2: ld はステータス 1 で終了しました
make: *** [sl] エラー 1


termcapが見つからないらしい。
Cygwinのsetup.exeからtermcap(Util)をインストールしてみるも解決せず。
ググってもよくわからなかった。


開き直ってtermcapを呼び出さないことにしてみた。
Makefileを編集。

      $(CC) $(CFLAGS) -o sl sl.c -lcurses -ltermcap
#     $(CC) $(CFLAGS) -o sl sl.c -lcurses

となっていたのを

#     $(CC) $(CFLAGS) -o sl sl.c -lcurses -ltermcap
      $(CC) $(CFLAGS) -o sl sl.c -lcurses

に修正。


すると、

> make CC=gcc CFLAGS='-O -I/usr/include/ncurses'
gcc -O -I/usr/include/ncurses -o sl sl.c -lcurses
> ls
Makefile  README  sl.1  sl.c  sl.exe  sl.h  sl.txt

コンパイルが成功してsl.exeができる。
あとはsl.exeをパスが通っている適当なディレクトリに移動させればOK。


これでlsをslに打ち間違えても安心!


参考
以下のページを参考にさせていただきました。

方法2:ダウンロードするだけ

もう少し調べていたらCygwin用にコンパイルされたexeファイルが見つかった。

こっちはめちゃくちゃアニメーションが長い。

> wget http://fd0.x0.to/cygwin/release/sl/sl-3.0.3-1bl13.tar.bz2
> tar xvf sl-3.0.3-1bl13.tar.bz2
usr/
usr/bin/
usr/bin/sl.exe
usr/share/
usr/share/doc/
usr/share/doc/Cygwin/
usr/share/doc/Cygwin/sl.README
usr/share/doc/sl/
usr/share/doc/sl/README
usr/share/doc/sl/README.patch5
usr/share/man/
usr/share/man/man1/
usr/share/man/man1/sl.1.gz

usr/binにあるsl.exeを、適当なパスが通っているディレクトリにおけば完了。


僕はこのsl.exeをslsl.exeにリネームして/usr/local/binに置いています。
これでlsをslslに打ち間違っても安心!