MacPorts
Ports のようなことができる MacPorts というものがあるらしい.
/opt/local に別ツリー (ライブラリ等) を作るようだ.
なので,適切にパスを通す必要がある..cshrc の set path と set manpath を更新した.
port コマンドの使い方 (http://guide.macports.org/#using.port のメモ):
- FreeBSD の make search は port search で OK
- port selfupdate すると,後述の sync はもちろんのこと,MacPorts infrastructure (MacPorts base) というのが新しくなったときに更新するらしい.
- port sync すると,ports が新しくなる.毎日しよう!
- port variants: 使えるオプションの一覧を取得できる.
- port -u upgrade outdated: 古い Ports をすべて更新する.-u をつけると古いバージョンを削除する.
- port {archive | pkg | dmg | rpm} [ports]: パッケージを作ることができる.pkg, dmg, rpm は MacPorts がなくてもインストールできるらしいが,当然,必要とするライブラリのパッケージも作っておかないと,インストールはできても動かないとおもう.
多分,base というのは /opt/local/var/macports/sources/rsync.macports.org/release/base のこと.中身をみてみると,configure とか *.m4 とかなので,MacPorts の共通ファイルみたいに思える.
ここがかわると MacPorts の仕組みがかわるかもしれないのでは?適切に selfupdate しないと,すべての Ports がインストール/アップデートできなくなるのではないかと思った.
MacPorts では,バージョンやオプションが違う同一の Ports を複数インストールできる.(例:オプション無しwget, +no_ssl の wget)
MacPorts では,元のファイルは /opt/local/var/macports/software にインストールし,同時に activate を行っていて,これにより /opt/local/* にハードリンクが張られている.
例えば,以下のように wget と wget+no_ssl をインストールしていて wget が active になっている.
# port activate wget
wget, wget+no_ssl, bin/wget の i ノードを調べると,以下のようになって,active になっているものをハードリンクしていることがわかる.
# ls -i /opt/local/var/macports/software/wget/*/opt/local/bin/wget /opt/local/bin/wget 1627089 /opt/local/bin/wget 1629368 /opt/local/var/macports/software/wget/1.11.4_0+no_ssl/opt/local/bin/wget 1627089 /opt/local/var/macports/software/wget/1.11.4_0/opt/local/bin/wget