MacOS 10.4 にPythonとSubversionを入れる

MacOS 10.5にはいろいろおいしいコマンドがそろっているけど、実質、仕事の現場にいちばん多い環境は10.4じゃないかと思います。そんなMacでも、コマンドラインツールとして、PythonSubversionを使えるようにしておきたいですね。※10.3.9未満はもう誰もサポートしてないので、いくらかユーザがいても泣いてもらうしか。

ヘビーユーザ(FreeBSD信者)にはMacPortsが理想だろうし、もうすこし現実主義なユーザにはfinkもあるけど、どちらも、「平均的なMacデザイナーさん」からは、極度に難しいものだと思います。彼らのMacには、XCodeも入ってないだろうから。それに、いくら人気があっても、標準と呼ぶには一長一短だし。

  • MacPorts : 供給するものがソースだけなので、最新版の反映は早いけど、必要なものを入手できるまでのコンパイル時間が長すぎる。
  • fink : ありがちなコマンドに関してはコンパイル済みバイナリがあるので早いけど、メンテナンスが遅い気がする。Debianみたい。

というわけで、PythonSubversionのバイナリを独自に(XCodeやパッケージ管理環境なしに)インストールしたいと思います。

Python

http://www.python.org/download/http://www.python.org/ftp/python/2.6/python-2.6-macosx.dmg が最新だけど、周辺ライブラリ、とくにネイティブコードを含むものが2.6に対応しきっていないうちは、2.5でいきます。
http://www.python.org/download/releases/2.5.2/http://www.python.org/ftp/python/2.5.2/python-2.5.2-macosx.dmg をダウンロード。

MacPython.mpkg を使ってインストールすると、

  • /Library/Frameworks/Python.framework/
  • /Applications/MacPython/

に、必要なファイルがインストールされ、インストールしたユーザのホームディレクトリにある .bash_profile(ターミナルの個人設定)にコマンド検索パスを書き足してもらえます。このとき、インストール前の状態のファイルを、.bash_profile.pysaveとして保存しておいてくれます。

ターミナルを開いて、

$ echo $PATH

で、コマンド検索パスに /Library/Frameworks/Python.framework/Versions/Current/bin/ が含まれていることを確認します。ここに、ターミナルから使うPython関連のコマンドが集まることになります。/Library/Frameworks/Python.framework/Versions/Current/ は、/Library/Frameworks/Python.framework/Versions/2.5/ のシンボリックリンク(エイリアス)になっていて、世代違いのPythonインタプリタが共存できます。Currentを切り替えれば、バージョンが切り替えられるという仕組み。

$ which python
$ python -V

で、pythonコマンドがたしかにインストール先のファイルを指しており、かつ、いまアクティブなPythonPython 2.5.2であることを確認します。

アンインストールしたい場合は、/Library/Frameworks/Python.framework/ と /Applications/MacPython/ から、該当ファイルを削除して、~/.bash_profile を、 .bash_profile.pysave を見ながら元に戻せばいいだけ…だと思います。すくなくとも、再インストールして環境を作り直すのが目的なら、これだけやっておけば困ることはないと思います。

※ 日本語のMacでは、FinderがLibraryやApplicationsフォルダを、「ライブラリ」「アプリケーション」と翻訳して表示してしまいます。それどころか、usrやetcなど、Finderで表示されないフォルダもあり、こういう場所に重要なファイルがインストールされます。わけがわからなくなったら、ターミナルでファイル一覧を見るのが一番。

Pythonパッケージ管理ツール これ基本

ライブラリを集める前に、Pythonのパッケージ管理ツールであるsetuptoolsをセットアップします。easy_installコマンドと言ったほうがわかりやすいかも。Rubyでいうとgemにあたるもの。

http://pypi.python.org/pypi/setuptools から、
http://pypi.python.org/packages/2.5/s/setuptools/setuptools-0.6c9-py2.5.egg#md5=fe67c3e5a17b12c0e7c541b7ea43a8e6
を拾い、ターミナルで

$ cd [ダウンロードしたファイルのあるパス]
$ sh setuptools-0.6c9-py2.5.egg

としてeggを実行すると、アクティブなPythonにsetuptoolsが追加されます。/Library/Frameworks/Python.framework/Versions/2.5/bin/easy_install が増えていれば成功です。

以降、独自に追加するライブラリはほとんど、
/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/site-packages
に、インストールされることになります。もうすでに、setuptools関連のファイルがすでに存在していることでしょう。

Pythonライブラリ
$ easy_install ipython       # 超高機能なPython対話シェル
$ easy_install pyExcelerator # Excelを読み書きするライブラリ
$ easy_install Genshi        # 最高にいけてるテンプレートエンジン

のように、easy_installコマンドを使えば、パッケージの名前を指定するだけで、ピュアPythonで作られたライブラリがインストールできます。パッケージをアンインストールしたくなったら、ほとんどの場合、site-packagesやbinから手動でファイルを削除すればOKです。

厄介なのは、Cで書かれたネイティブコードを含むライブラリです。Macでバイナリ互換は難しいので、easy_installでインストールできるものは、Mac用のコンパイル済みバイナリを準備していないものが多くあります。まあ、マイナーなのはあきらめて、有名どころのコンパイル済みバイナリだけは、こちらにあるMac用バイナリのパッケージを拝借しましょう。

http://pythonmac.org/packages/py25-fat/index.html

プログラマとデザイナとで日曜大工ツールを共有するんだったら、PIL(有名な画像処理フレームワーク)とwxPython(クロスプラットフォームのリッチなGUI)をインストールしておけばよいと思います。

http://pythonmac.org/packages/py25-fat/dmg/PIL-1.1.6-py2.5-macosx10.4-2007-05-18.dmg
http://pythonmac.org/packages/py25-fat/dmg/wxPython2.8-osx-unicode-2.8.3.0-universal10.4-py2.5.dmg

Subversion

Subversionの最新は1.5.xですが、困ったことに、1.4.xとの互換性がありません。10.5に初期インストールされているsvnコマンドは、1.4.4なのです。10.4を10.5と等価にするには、1.4.4のバイナリが必要です。

さいわい、希望したとおりのものが、ここにありました。
http://homepage.mac.com/martinott/
インストールすると、
/usr/local/bin/
以下に、svnやsvnlookなど、Subversionが提供するコマンド一式がインストールされます。/usr/local/bin/ は、すでにコマンド検索パスに含まれているので、設定の変更は発生しません。

インストールできたら、

$ which svn
$ svn --version

で、インストールしたsvnコマンドが動いていること、確実に1.4であることを確認しておきます。もし1.4の作業フォルダを1.5で表示してしまうと、フォルダが1.4互換を失います。使う前にちゃんと確認しておかないと、面倒なことになりますよ。

1.4にこだわるのは、実は正直なところ、RapidSVNのMac版のSubversion1.5対応方針が決まってないからでもあったり…。

余談

MacOSは普通のUnixと異なり、どのフォルダに何を置くか、パッケージ作者によってバラバラです。いろんなところに実行可能ファイルと共有ライブラリが散らかってしまうので、他のOS環境と比べて、「いまインストールしたものが動くか確認する」という基本的な行為に、高いスキルが必要になると感じました。MacでPythonSubversion使おうと思っただけなのに、何種類インストール方法あるんだよ。
その点、Linuxディストリビューションは、パッケージ管理の一貫性が高く、重複するバイナリが別のところにインストールされるなんてことがないので、簡単ですね。WindowsのインストーラもMacのパッケージと似てるけど、Windowsというプラットフォームではバイナリを長期安定供給できる(ハードウェアのアーキテクチャが急に変わったり、マイナーバージョンチェンジでそうそう下位互換性を失ったりしない)し、また、しなくちゃならない(バイナリが供給されないと身動き取れないユーザの数が膨大)し、なので、実質的には本家版以外の派生はほとんどないわけで。

OSベンダーの仕事には、すべてのサードパーティを統括するサポート体制を持つ(Linuxディストリビュータ)か、勝手なサードパーティが安心して自由にやれる場を用意する(Microsoft)か、どちらか選んでその政治をやり遂げるというのがあると思う。と考えると、Appleという企業には、自分以外のソフトウェアベンダーのことを考慮しない体質が垣間見えるなぁと思いました。やっぱり、Appleは所詮Appleなのかなぁ。