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
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に打ち間違っても安心!