ワタタツの日記!
2012 年 8 月 15 日 (水)
☆ GitLab openSUSE への導入でのはまった gem charlock_holmes
GitLab という github クローンを openSUSE 12.1 に入れてみたときのはまりどころをメモがてらだらだら書きます。 github は便利ですがプライベートレポジトリを管理するのはちょっくらちょっくらなので GitLab というわけでありました。(GitLab は Rails による「がわ」で、中の git レポジトリを作るものは gitolite などでさくっと作れます。)
charlock_holmes がビルドできない
公式の installation.md を読みながらやりますが、 これは debian 系であることと、ruby をもろに入れていることが違います。
openSUSE のパッケージの ruby は残しておきたいので、rvm で入れました。 rvm は gitlab アカウントのローカルに入れました。
しかしそこで必要な charlock_holmes という gem がビルドが通らないんですよ。 ちょっと待って下さいよ。
解決策
結論はあと(えー
gitlab構築 - opensuse - Articles というページがあって、64ビット環境でうまくいかないよという問題を回避した方法が書いてありました。
基本的には issue 8 の通りに gem fetch して unpack して修正して gem build してできた .gem ファイルをインストール、とするのですが、これをやってもうまくかない。
/src なんかないよといわれるのであります。 おかしい。unpack したものには確かにあります。ext/charlock_holmes/src。
解決。build でファイルが固まってなかった。
ファイル 1個で build されていた
で、いろいろさぐっていると、できた **.gem を unpack してみるとなんとファイル1個しかない!
それもそのはず。 charlock_holmes.gemspec には
s.files = `git ls-files`.split("\n")
というように git ls-files から固めるファイルリストを取ってきているから、fetch した gem には .git/ がないので s.files = が正常にファイルリストを取れないのでした。
git clone してくる
といわけで、gem fetch してくるんじゃなくて
git clone https://github.com/brianmario/charlock_holmes.git
と、git clone してきて、書き換えて、build すれば、ちゃんと全部が build されるというわけでした。 すっきり。
それであとはちゃんと行きました。 あ、うそです。 普通に bundle install すると vendor に入れようとするので .bundle/config を消しました。
さらに、もう 0.6.9 が正常に入ったのに、0.6.8 をインストールしようとするので、Gemfile.lock を強制的に書き換えました。
それで bundle install は完了です。
redisをインストール
ついでに redis という key-value ストアがいるので openSUSE の追加用レポジトリを追加しました。
zypper addrepo -n "server-database-12.1" http://download.opensuse.org/repositories/server:/database/openSUSE_12.1 "server-databse-12.1"
まとめ
GitLab をインストールしました。 charlock_holmes ではまったものの、Hiroshima.rb 会長の助けもあり(自力じゃなかったのかよっ)、なんとかなりました。
きれいだし、よくできています。まるで github です。
しかしこの Rails アプリ、メモリを 250 MB も食いよったので落としました。いるときだけ使おうと思います。 (えー!
gitolite さえあれば何でもできるもんね。hook するだけだからメモリも食わんし。とはいえ GitLab は便利だなあと思います。メモリ潤沢なマシンを使うときは常時 up させたいと思います。