非IT系のエンジニアな私ですが、ソフトウェア開発で取り入れられているAgile開発に憧れる今日このごろ。Agileのひとつと言われる「スクラム」開発を実現できないかとRedmineのプラグイン「Backlog」を試すことにしました。環境はとりあえずmacのローカル環境です。
すでにインストールを済ませていたRedmineに入れようとしたら、gemのnokogiriが参照しているライブラリが存在しなくて怒られました。以下、その対処。
otoolで調べると、確かに存在しないパスを探していた。多分、MacPortsを消してHomebrewに一本化しようと/opt/local以下を綺麗サッパリ消したことも一因かと。libxml2と、libiconv。
%> otool -L /Users/macj/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/nokogiri-1.5.10/lib/nokogiri/nokogiri.bundle
libxmlは/usr/libにあったのでそちらを参照するように、install_name_toolでパスを書き換え。
%> sudo install_name_tool -change "/opt/local/lib/libxml2.dylib" /usr/lib/libxml2.2.dylib /Users/macj/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/nokogiri-1.5.10/lib/nokogiri/nokogiri.bundle
続いてlibiconv。Homebrewにはlibiconvはなかった。がーん。とりあえず、nokogiriのチュートリアルに従ってソースからコンパイル。
%> wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.13.1.tar.gz %> tar xvfz libiconv-1.13.1.tar.gzcd libiconv-1.13.1 %> ./configure --prefix=/usr/local/Cellar/libiconv/1.13.1 %> make %> sudo make install
ふたたびbacklogのインストールをトライ。
%> bundle exec rake redmine:backlogs:install
またもや撃沈。どうやらMacPortsを消した余波が大きかった模様。依存関係のあるgemが参照するlibsslとlibcryptoがない(/opt/local以下に)と言われる。しかも /usr/lib以下のライブラリをinstal_name_toolで設定したが、今度はバージョンがNGだった(MacOSX 10.8.4にはlibssl.0.9.8しかなく、libssl1.0.0じゃなきゃダメだと言われる。)探してみるとHomebrewでインストールされたopensslにlibsslとlibcryptoがあったので、そちらを指定。
再度インストールをトライ。
やっと動いた!
2.3.2.stable. You are running backlogs v1.0.5, latest version is 1.0.5
=====================================================
Redmine Backlogs Installer
=====================================================
Installing to the production environment.
Fetching card labels from http://git.gnome.org...done!
Configuring story and task trackers...
-----------------------------------------------------
Which trackers do you want to use for your stories?
1. 機能
2. サポート
3. バグ
Separate values with a space (e.g. 1 3): 1 2 3
You selected the following trackers: 機能, サポート, バグ. Is this correct? (y/n) y
-----------------------------------------------------
以上、LinuxでいうLD_LIBRARY_PATH的な環境変数を設定すればいいのかもしれないけど、設定次第でほかのアプリケーションが動かなくなるのも困るので、install_name_toolで対応してみました。