今日は、Lion君にbazaarを入れてみたのです。MacPortsを使っても良いのですが、bazaarのレポジトリサーバを上げるとなると、apacheまでインストールされてしまいます。
今回は、Lion君の純正で入っているApacheやPythonを使いたいと思います。

まずは、http://wiki.bazaar.canonical.com/MacOSXDownloads からbazaar本体を持ってこようと思いますが、何とも悲しい注意があります。

Note: to use Bazaar in OS X Lion (10.7), you should change the default version of Python to 2.6 :

なに!? Lionにデフォルトで入っているPythonは2.7ですよ!
わざわざ2.6にバージョンを下げて使えと。。。すでにPythonにせっせと入れたモジュールが使えないじゃないか。

ここは、Python 2.7の環境で使ってやる! だって、既にApacheでPythonは2.7で動かしてるもん!!

ということで、ソースコードからインストールします。

Lion君はデフォルトでeasy_installが入っているので非常に簡単です。Pythonへのモジュールのインストールはこれを使います。
まずは、bazaarではCythonが必要なようなので、こいつからやっつけます。

wget http://cython.org/release/Cython-0.15.1.tar.gz
tar zxvf Cython-0.15.1.tar.gz
cd Cython-0.15.1
sudo python setup.py install

では、御本体のbazaarをいよいよインストール。

wget http://launchpad.net/bzr/2.5/2.5b3/+download/bzr-2.5b3.tar.gz
tar zxvf bzr-2.5b3.tar.gz
cd bzr-2.5b3
sudo python setup.py install

これで、bzrコマンドが使えるようになります。
bzrtoolを入れておくと色々役に立つので入れておきましょう。

wget http://launchpad.net/bzrtools/trunk/2.3.0/+download/bzrtools-2.3.0.tar.gz
tar zxvf bzrtools-2.3.0.tar.gz
cd bzrtools
sudo python setup.py install

ここからが、本番。

レポジトリサーバを立ち上げるためにApacheに色々登録しなければなりません。
その設定は、google君に聞けば教えてくれると思います。でも、それでも起動できない人はたぶんFastCGIでつまずいているのだと思います。

他のサイトの説明だと、bzr-smart.fcgiとか用意すればOKだと書かれているところが多いのですが、だいたいがこのbzr-smart.fcgiファイルで使っているfcgiモジュールの事が記載されていません。良く書いてあっても、

http://svn.saddi.com/py-lib/trunk/fcgi.py

からこのモジュールを持ってこい。でも、このサイトすでにありません。実は、WSGIのモジュール関連をまとめてflup.orgに引っ越されています。

ということで、flupモジュールをインストールすればOK

sudo easy_install flup

これで、すべてのモジュールがそろいました。bazaarのレポジトリサーバを立ち上げて、堪能してください。

あ、言い遅れましたが、私はレポジトリサーバはsvn派で、クライアント側でbzrを使っていたりします。(^_^)

サーバでJenkinsを使ってCIを行っているのですが、ちょっとした実験するときに自分のMac上で動かしてみたいと思い、jenkins-ci.org からネイティブパッケージ(Mac用インストーラ)を持ってきてインストールしてみました。

今回利用したJenkinsのバージョンは ver. 1.439 です。

インストーラを、ダブルクリック!

終了したら、http://localhost:8080/ をブラウザでアクセスすればOK!

のはずですが、おかしい (^_^;
Winstone Servlet Containerさんが、コンテナがないよ。ってエラーを返してきます。

ここは、素直に/var/log/system.log を見てみます。

java.io.FileNotFoundException: /Users/Shared/Jenkins/Home/war/META-INF/MANIFEST.MF (No such file or directory)

なるほど、例外が出てます。
たしかに、こんなファイルは無いですし、ディレクトリもありません。
では、自動起動用のplistを見てみます。

more /Library/LaunchDaemons/org.jenkins-ci.plist

ユーザがデーモン(daemon)さんで起動するようになってますね。
起動スクリプトの /Library/Application Support/Jenkins/jenkins-runner.sh は、問題なさそうです。
では、ファイルがないなら作成できなかっただけかな。と、思い、、、

ls -l /Users/Shares

あれれ、Jenkinsディレクトリが

drwxr-xr-x 2 root wheel 102 11 15 19:09 Jenkins

rootさんの所有になってますね。
daemonさんで起動されるのにパミッションが無いです。

sudo chown daemon /Users/Shares/Jenkins

として、オーナーをdaemonさんに変更します。
Jenkinsさんを再起動しましょう。

sudo launchctl unload /Library/LaunchDaemons/org.jenkins-ci.plist
sudo launchctl load /Library/LaunchDaemons/org.jenkins-ci.plist

よしよし、これでhttp://localhost:8080/ で見慣れたJenkinsさんが現れてくれました。

でも、この対応ってあんまりよろしくないんですよね。
たとえば、Gitなんかを使うときに認証鍵とかを使う場面が多々あるのですが、daemonさんのHOMEは、/var/rootなので、/Users/Shares/Jenkins/HOMEに鍵をおいてもそのままじゃだめなんですよね。dscl コマンドでちゃんとユーザ設定しないと競合しちゃいます。ま、今回はこれでいいか。。。

これって、インストーラのバグなのかな? 私の環境だけなのか。
同じ症状の方がいらっしゃったら教えてください。バグ報告します。

追記:jenkins-ci.orgのBug Trackerにも同じ事象の方がいらっしゃいました。明らかBugですかね。