Cygwinにtreeコマンドがなかったのでビルドしたメモ
Cygwin初心者がCygwinを入れてみて気になったことメモ - kanonjiの日記から、最近Cygwinを使っているんですが、Cygwinにはtreeコマンドがありませんでした。Cygwinのリポジトリ*1にも見当たらず、しょうがないのでソースコードからビルドしました。MakefileにCygwin場合にコメントアウトする箇所があったり、treeコマンドの方はCygwinを想定して作られてるみたいです。特にはまる事も無くビルドできました。
ソースコードのダウンロード
$ curl -LO http://mama.indstate.edu/users/ice/tree/src/tree-1.6.0.tgz $ tar xzfv tree-1.6.0.tgz $ cd tree-1.6.0.tgz $ vi Makefile
Makefileを編集する
-prefix = /usr +prefix = /usr/local
やっぱり自分でビルドしたコマンドは/usr/local/bin
に入って欲しいので変更しました。configureが無いみたいなので、Makefileを直接変えました。下記のとおり、直接編集する事を想定しているみたいだし。
# Uncomment for Cygwin: -#CFLAGS=-O2 -Wall -fomit-frame-pointer -DCYGWIN -#LDFLAGS=-s -#TREE_DEST=tree.exe -#OBJS+=strverscmp.o # Uncomment for Cygwin: +CFLAGS=-O2 -Wall -fomit-frame-pointer -DCYGWIN +LDFLAGS=-s +TREE_DEST=tree.exe +OBJS+=strverscmp.o
MakefileにはCygwinの場合にコメントアウトを外す箇所がある。
$ make gcc -O2 -Wall -fomit-frame-pointer -DCYGWIN -c -o tree.o tree.c gcc -O2 -Wall -fomit-frame-pointer -DCYGWIN -c -o unix.o unix.c gcc -O2 -Wall -fomit-frame-pointer -DCYGWIN -c -o html.o html.c gcc -O2 -Wall -fomit-frame-pointer -DCYGWIN -c -o xml.o xml.c gcc -O2 -Wall -fomit-frame-pointer -DCYGWIN -c -o hash.o hash.c gcc -O2 -Wall -fomit-frame-pointer -DCYGWIN -c -o color.o color.c gcc -O2 -Wall -fomit-frame-pointer -DCYGWIN -c -o strverscmp.o strverscmp.c gcc -s -o tree.exe tree.o unix.o html.o xml.o hash.o color.o strverscmp.o $ make install install -d /usr/local/bin install -d /usr/local/man/man1 if [ -e tree.exe ]; then \ install -s tree.exe /usr/local/bin/tree.exe; \ fi install doc/tree.1 /usr/local/man/man1/tree.1
treeのソースコードを探す
Cygwin/tree - discypus
- Debian には入っていたので、まずはhttp://packages.debian.org からパッケージを探して
- http://packages.debian.org/stable/utils/tree が見つかった。
- オリジナルのソースコード tree_1.3.orig.tar.gzを入手。
確かにちょっとググっても見つからなかったので、適当なディストリビュージョンのパッケージから探すのはいいかも。tree_1.5.3-1_ia64.deb
を解凍して、copyrightとかREADMEとかを見ると、大本のURLが見つかりました。