(MySQL 5.1環境でmysql2 gemのビルドエラーが発生する問題と回避策を追記)
Redmine 3.4.0がリリースされました。3.4.0では、多数の新機能が加わっています。これらについて日本語で紹介しているRedmine.JPブログがあります。
Redmine 3.4 新機能紹介 | Redmine.JP Blog
Redmineのバージョンアップに追従しやすくする - torutkのブログ
で、RedmineをTARボールではなくSubversionリポジトリのリリースブランチから取得する方法を書きました。この方法で展開したRedmineを3.3から3.4に更新してみます。
Subversionのブランチを変更
/var/lib/redmine-3.3-stable にチェックアウトした作業ディレクトリを3.4のブランチに変更します。
redmine-3.3-stable$ svn sw ^/branches/3.4-stable :
ディレクトリ名がredmine-3.3-stableのままでは気持ち悪いので、変えておきます。また、シンボリックリンクも対応して修正します。
redmine-3.3-stable$ cd .. lib$ mv redmine-3.3-stable redmine-3.4-stable lib$ ln -sf redmine-3.4-stable redmine lib$
Gemの更新
lib$ cd redmine redmine$ bundle update : redmine$
データベースのマイグレート
redmine$ bundle exec rake db:migrate RAILS_ENV=production : redmine$ bundle exec rake tmp:clear RAILS_ENV=production redmine$
CentOS 6.9, MySQL 5.1.73環境での問題と対処
bundle updateエラー
bundle updateを実行するとエラーになりました。
Installing mysql2 0.4.7 (was 0.3.21) with native extensions Gem::Ext::BuildError: ERROR: Failed to build gem native extension. : compiling client.c client.c: In function ‘_mysql_client_options’: client.c:906: error: ‘MYSQL_ENABLE_CLEARTEXT_PLUGIN’ undeclared (first use in this function)
mysql2-0.4.7.gemのネイティブコードをビルドする時に、"MYSQL_ENABLE_CLEARTEXT_PLUGIN"の定義が見つからないと。
このMYSQL_ENABLE_CLEARTEXT_PLUGINは、MySQL 5.6でサポートされるようです。
mysql2 gemのリポジトリにissuesが登録されていました(3日前)。
"Cannot install 0.4.7 on MySQL 5.1 (CentOS 6)"
https://github.com/brianmario/mysql2/issues/866
まさしくこれですね。これは、mysql2-0.4.7で発生した問題なので、mysql2-0.4.6をインストールするようにGemfileを修正します。
Index: Gemfile =================================================================== --- Gemfile (リビジョン 16753) +++ Gemfile (作業コピー) @@ -62,7 +62,7 @@ adapters.each do |adapter| case adapter when 'mysql2' - gem "mysql2", "~> 0.4.6", :platforms => [:mri, :mingw, :x64_mingw] + gem "mysql2", "0.4.6", :platforms => [:mri, :mingw, :x64_mingw] when /postgresql/ gem "pg", "~> 0.18.1", :platforms => [:mri, :mingw, :x64_mingw] when /sqlite3/
これで、bundle updateを実行すると、エラーが回避できました。
db:migrate でエラー
LoadError: cannot load such file -- redcloth3 /var/lib/redmine-3.4-stable/vendor/bundler/ruby/2.3.0/gems/activesupport-4.2.8/lib/active_support/dependencies.rb:274:in `require'
時間切れにつき、後日調査
新たに redmine 3.4のブランチをチェックアウトしてインストールしたらこの問題は発生しませでした。