例えばtree
をインストールすることを考えよう。
という手順が必要になる。
tree
みたいなあまりに基本的なコマンドはここのところが初心者には最もハードルが高い。もっとも私のようなロートルにとっても昔知ってたftpサイトの類がまったくつながらないなど、そこそこ面倒。そもそも最近のmacosには素のftpコマンドがついていない。今回はOregon State University Open Source Lab Mirrorsというところでたまたま見つけた。
tree
は単に階層ディレクトリ構造を読み取り、それをテキストベースで整形して出力するだけなので、特別なツールやライブラリは必要ないはず、と思ってここで取り上げている。いや正直に白状するととある理由でtreeコマンドがどうしても欲しかったのでインストールしようとしたところ、どのバッケージ管理システムを導入するかまだ決めかねていたので、ここは大昔のやりかたでやってみようと思い至っただけなのだけれど。
tree-2.1.1.tgz
を解凍し、tree-2.1.1
ディレクトリに移動し、$ tar zxf tree-2.1.1.tgz $ cd tree-2.1.1 $ ls CHANGES README file.c info.c tree.c INSTALL TODO filter.c json.c tree.h LICENSE color.c hash.c list.c unix.c Makefile doc html.c strverscmp.c xml.c $
ここでREADME
やINSTALL
を読みなさいというのが定石かつ必須なのだけれど、見るからにmake一発なので、ロートルは、
kimi@persimmon tree-2.1.1 % make -n gcc -ggdb -std=c11 -pedantic -Wall -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -c -o tree.o tree.c gcc -ggdb -std=c11 -pedantic -Wall -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -c -o list.o list.c . . . gcc -ggdb -std=c11 -pedantic -Wall -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -c -o html.o html.c gcc -ggdb -std=c11 -pedantic -Wall -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -c -o strverscmp.o strverscmp.c gcc -o tree tree.o list.o hash.o color.o file.o filter.o info.o unix.o xml.o json.o html.o strverscmp.o kimi@persimmon tree-2.1.1 % $
なんてことをやってみる。make
かけるときは-n
で様子を見るのは絶対。これなら問題なさそうなのでmake
する。
$ make gcc -ggdb -std=c11 -pedantic -Wall -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -c -o tree.o tree.c In file included from tree.c:19: ./tree.h:211:17: warning: a function declaration without a prototype is deprecated in all versions of C [-Wstrict-prototypes] char *gnu_getcwd(); ^ void ./tree.h:275:22: warning: a function declaration without a prototype is deprecated in all versions of C [-Wstrict-prototypes] . . . 2 warnings generated. gcc -ggdb -std=c11 -pedantic -Wall -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -c -o strverscmp.o strverscmp.c strverscmp.c:4:28: warning: invalid UTF-8 in comment [-Winvalid-utf8] Contributed by Jean-Fran<E7>ois Bignolles <bignolle@ecoledoc.ibp.fr>, 1997. ^ strverscmp.c:160:7: warning: no newline at end of file [-Wnewline-eof] #endif ^ 2 warnings generated. gcc -o tree tree.o list.o hash.o color.o file.o filter.o info.o unix.o xml.o json.o html.o strverscmp.o $
ウォーニングがちょっと出てるけどほとんどがプロトタイプ宣言が無いという類なので、まあよかろう。後はコメントにUTF-8使ってるってやつで、だからプログラムはコメントまで含めて米語だけで書けといつも言ってるんだ。最後のやつは、まあ大丈夫だろう。
$ make install -n install -d /usr/local/bin install -d /usr/local/man/man1 install tree /usr/local/bin/tree; \ install -m 644 doc/tree.1 /usr/local/man/man1/tree.1 $ sudo make install
make install
も先ずは-n
付きで確認する。単に/usr/local/
以下にファイルを配置するだけなので管理者権限でmake install
しておしまい。
試しに実行してみるとこんな感じ。
$ tree tree-2.1.1 tree-2.1.1 ├── CHANGES ├── INSTALL ├── LICENSE ├── Makefile ├── README ├── TODO ├── color.c ├── doc │ ├── global_info │ ├── tree.1 │ └── xml.dtd ├── file.c ├── filter.c ├── hash.c ├── html.c ├── info.c ├── json.c ├── list.c ├── strverscmp.c ├── tree.c ├── tree.h ├── unix.c └── xml.c 2 directories, 22 files
% sudo port -v selfupdate Password: ---> Updating MacPorts base sources using rsync . . . The ports tree has been updated. To upgrade your installed ports, you should run port upgrade outdated % sudo port upgrade outdated Nothing to upgrade. %
% port search wget . . . wget @1.20.3_3 (net, www) internet file retriever . . . %
% sudo port install wget Password: ---> Computing dependencies for wget The following dependencies will be installed: . . . wget has the following notes: To customize wget, you can copy /opt/local/etc/wgetrc.sample to /opt/local/etc/wgetrc and then make changes. % wget wget: URLがありません 使い方: wget [オプション]... [URL]... 詳しいオプションは `wget --help' を実行してください。 % which wget /opt/local/bin/wget %