====== コマンドラインツールのインストール ======
===== 基本の手作業 =====
例えば''tree''をインストールすることを考えよう。
- ソースコードを入手する
- ロードモジュールを作る
- システムにインストールする
という手順が必要になる。
==== ソースコードの入手 ====
''tree''みたいなあまりに基本的なコマンドはここのところが初心者には最もハードルが高い。もっとも私のようなロートルにとっても昔知ってたftpサイトの類がまったくつながらないなど、そこそこ面倒。そもそも最近のmacosには素のftpコマンドがついていない。今回は[[https://ftp2.osuosl.org/|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-Franois Bignolles , 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
===== MacPorts版 =====
- MacPortsのインストール([[https://www.macports.org/install.php|Go official site.]])
- Selfupdate% 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.
%
- Search% port search wget
.
.
.
wget @1.20.3_3 (net, www)
internet file retriever
.
.
.
%
- Install% 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
%
===== Homebrew版 =====
- Homebrewのインストール([[https://brew.sh/index_ja|Go official site.]])
===== Fink版 =====
- [[http://xquartz.macosforge.org/landing/|Xquartz]]のインストール
- finkのインストール
- sourceforgeから[[http://sourceforge.net/projects/fink/|ダウンロード]]する
- $ xcode-select --install
- ファイルを展開したディレクトリで $ ./bootstrap
- $ /sw/bin/pathsetup.sh
- $ fink selfupdate
- $ fink update-all
- 試しにwgetあたりをインストール $ fink install wget
- Gnu Compiler Collectionのインストール
- Atlasのインストール
- FFTWのインストール