さくらのVPSで使用している Redmine を最新にしようと思い立った。
% cd work % wget http://www.redmine.org/releases/redmine-2.5.1.tar.gz % tar xf redmine-2.5.1.tar.gz % mv redmine-2.5.1 /etc/lib/rails % cd /etc/lib/rails/redmine-2.5.1 % cp ../redmine/config/database.yml config/ % cp ../redmine/config/configuration.yml config/ % bundle install --path vendor/bundle % bundle exec rake generate_secret_token
ここまで順調に来たが、ここでエラー。
Could not find rake-10.1.1 in any of the sourcesなぜか、bundler から bundler で今しがたインストールしたはずの gem が参照できないらしい。
調べてみると、どうやら bundler が実行時に参照するのは vendor/bundle/ruby/2.0.0 以下、しかしインストール時にインストールしていたのは vendor/bundle/ruby/1.9.1 以下というちぐはぐな状態になっていた。
思い当たることは、ruby を 2.0.0 にアップデートしたこと。
「今の Redmine をインストールした → ruby 2.0.0 をインストール → 今回」なので今までの Redmine は問題なく動いていたんだろうな
しかも ruby 2.0.0 をインストールした時、手順を間違えて ruby 1.9.3 の実行ファイルを正しく更新できていなかったようだ。
つまり、gem は ruby 1.9.3 の頃のものが動いていて bundler によるインストールは 1.9.1 以下に配置するが、実行時は ruby 2.0.0 で動いているので 2.0.0 以下を参照しようとしていたということだな。
というわけなので、rubyの最新版からちゃんとインストールし直すことにした。
% wget http://ftp.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p451.tar.gz % tar xf ruby-2.0.0-p451.tar.gz % cd ruby-2.0.0-p451 % ./configure --prefix=/usr/local/ruby-2.0.0-p451 % make % make install % rm /usr/bin/erb % rm /usr/bin/gem % rm /usr/bin/irb % rm /usr/bin/rake % rm /usr/bin/rdoc % rm /usr/bin/ri % rm /usr/bin/ruby % rm /usr/bin/testrb % ln -s /usr/local/ruby-2.0.0-p451/bin/* /usr/bin/
手順をミスった ruby-2.0.0-p353 が動かないように変更
% mv /usr/local/bin/erb{,.bak} % mv /usr/local/bin/gem{,.bak} % mv /usr/local/bin/irb{,.bak} % mv /usr/local/bin/rake{,.bak} % mv /usr/local/bin/rdoc{,.bak} % mv /usr/local/bin/ri{,.bak} % mv /usr/local/bin/ruby{,.bak} % mv /usr/local/bin/testrb{,.bak}
bundler をインストール
% gem install bundler % ln -s /usr/local/ruby-2.0.0-p451/bin/bundle /usr/bin/
passenger の最新をインストールして変更
% gem install passenger % cd /usr/local/ruby-2.0.0-p451 % ./bin/passenger-install-apache2-module # /etc/apache2/mods-available/passenger.load を下記に変更 LoadModule passenger_module /usr/local/ruby-2.0.0-p451/lib/ruby/gems/2.0.0/gems/passenger-4.0.41/buildout/apache2/mod_passenger.so # /etc/apache2/mods-available/passenger.conf を下記に変更 PassengerRoot /usr/local/ruby-2.0.0-p451/lib/ruby/gems/2.0.0/gems/passenger-4.0.41 PassengerDefaultRuby /usr/bin/ruby
redmine-2.5.1 のインストールのやり直し
# 同じなので省略 % bundle install --path vendor/bundle % bundle exec rake generate_secret_token % bundle exec rake db:migrate RAILS_ENV=production % bundle exec rake tmp:cache:clear RAILS_ENV=production % bundle exec rake tmp:sessions:clear RAILS_ENV=production % mkdir public/plugin_assets % cd ../ % chown -R www-data:www-data redmine-2.5.1 % ln -s /var/lib/rails/redmine-2.5.1 /var/lib/rails/redmine % service apache2 restartちゃんと表示されて一安心
0 件のコメント :
コメントを投稿