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, rpmMacPorts がなくてもインストールできるらしいが,当然,必要とするライブラリのパッケージも作っておかないと,インストールはできても動かないとおもう.


多分,base というのは /opt/local/var/macports/sources/rsync.macports.org/release/base のこと.中身をみてみると,configure とか *.m4 とかなので,MacPorts の共通ファイルみたいに思える.
ここがかわると MacPorts の仕組みがかわるかもしれないのでは?適切に selfupdate しないと,すべての Ports がインストール/アップデートできなくなるのではないかと思った.


MacPorts では,バージョンやオプションが違う同一の Ports を複数インストールできる.(例:オプション無しwget, +no_sslwget)
MacPorts では,元のファイルは /opt/local/var/macports/software にインストールし,同時に activate を行っていて,これにより /opt/local/* にハードリンクが張られている.
例えば,以下のように wgetwget+no_ssl をインストールしていて wget が active になっている.

# port activate wget
      • > Activating wget
      • > The following versions of wget are currently installed:
      • > wget @1.11.4_0 (active)
      • > wget @1.11.4_0+no_ssl
Error: port activate failed: Registry error: Please specify the full version as recorded in the port registry.

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