2011年2月19日土曜日

MacPorts でバイナリを共有する (MacPors 2.0 以降では使えません)

<2011年8月8日追記>
OS X Lion と同時にリリースされた MacPorts 2.0 ではこの手法によるバイナリ共有ができないみたいです。僕自身は Lion とともに Homebrew 使うようになったので、そこら辺の事情はあまりきちんと確認できてません。
一応記録としてこのエントリは残しておきますが、 内容自体はあてになりませんのでご注意ください。
</2011年8月8日追記>

MacPorts は便利だけど、MacBook Air上でソフトのコンパイルまでやる気にはなれないのでなんとかしようぜ、というお話。元ネタは「MacPortsのバイナリパッケージを複数のMacで共有してみるメモ (blog@browncat.org)」から。
想定しているのは、iMac と MacBook Air の両方を持っていて、MacBook Air で使うソフトは iMac でコンパイルしてからインストールしたい、というような状況です。

まずは、MacPorts を iMac と MacBook Air の両方にインストール。

続いて、設定変更。両方のマシンの /opt/local/etc/macports/macports.conf 内にある portarchivemode を yes にしておきます。他の部分は修正の必要なし。

出来上がったパッケージは /opt/local/var/macports/packages/darwin 以下に置かれるので、このディレクトリを適当な手段で共有 (Dropbox で共有されるディレクトリからのシンボリックリンクにするとか)

もうちょっと正確に書くと、 出来上がったパッケージは以下の場所に置かれます。
  • アーキテクチャ依存のパッケージ  /opt/local/var/macports/packages/darwin/x86_64 (古いマシンだと、x86_64以外にPPCとかx86とかもあるのかも)
  • アーキテクチャに依存しないパッケージ /opt/local/var/macports/packages/darwin/noarch

ということなんで、これ以降は x86_64 とか noarch 以下に XXX.tgz という名前のパッケージがどんどんたまっていくことになります。

実際の運用時には、まず 欲しいパッケージを iMac にインストールし、MacBook Air へは、-b オプションを付けてインストール (sudo port -b install &lt;package&gt;) という手順を踏むことになります。2つのマシンのPortsツリーの更新もお忘れなく。

&lt;追記&gt; -b オプションなしでインストールしても、パッケージが存在したらそちらを優先的に使うようです。&lt;/追記&gt;

ー b オプション付けてるのに必要なバイナリパッケージがない場合は、勝手にコンパイルされる……のではなく、インストールが途中で止まります。2つのマシンで同じパッケージをインストールしてる分にはこの問題は起こらないはずなんで、ファイルの同期を待ってもう一回やり直すなりしてください。

また、アンインストールや ソフトの更新などによって使われなくなったパッケージがあっても、自動的に削除されるということはなさそうです (clean オプションを使ってもダメ)。それほど大きな問題にはならないかもしれませんが、時々は気にかけてみてください。

なお、port コマンドのオプションには、pkg とか dmg とかあって、これでパッケージ作って他のマシンにインストールすることもできますよ、みたいなことがドキュメントには書かれていますが、今のところ上手くいってません。

本来ならば、pkgオプションあたりを活用するのが正解なんでしょうけど。

0 コメント:

コメントを投稿