torutkのブログ

ソフトウェア・エンジニアのブログ

Redmine 2.1.4から2.2.0へアップデート実施エラー記録(CentOS 6.3)


Redmine 2.2.0がリリースされたので、CentOS 6.3上で動作しているRedmine 2.1.4からのアップデートを実施してみました。今回は、大きな変化がないと予想していたのですんなりアップデートできると思っていましたが、予想は外れていろいろ障害を乗り越える必要が出てしまいました。

bundle install時、xapian-fullでエラー

bundle installを実行したときに、xapian-full gemをインストールしようとし、その際にエラーが発生しました。

Installing xapian-full (1.2.3) with native extensions
Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.
  :
configure: error: Neither uuid/uuid.h nor uuid.h found - required for brass, chert
 and flint (you may need to install the uuid-dev, libuuid-devel or e2fsprogs-devel package)
rake aborted!

xapian-full gemは、全文検索機能らしいです。Redmine 2.1.4のGemfile,
2.2.0のGemfileを見てみましたが、どちらにもないgemでした。そこで、2.1.4で使っていたプラグインを調べると、DMSFがこれを使っていました。
この xapian-fullの全文検索は日本語には対応していないので、DMSFプラグインを入れるときのbundle install時に--without xapian で外していました。

xapian-fullをインストールする場合は、CentOS標準パッケージのlibuuid-develを入れることで解決します。似た名前のuuid-develパッケージでは解決しませんでした。

generate_secret_token がエラー

# bundle exec rake generate_secret_token
rake aborted!
database configuration does not specify adapter
/var/lib/redmine-2.2.0/vendor/bundler/ruby/1.9.1/gems/
activerecord-3.2.9/lib/active_record/connection_adapters/
abstract/connection_specification.rb:47:in `resolve_hash_connection'
/
...

database.ymlは2.1.4のものをコピーをしたので、なぜ認識できないかは不明です。

# bundle exec rake generate_secret_token RAILS_ENV=production
** Invoke generate_secret_token (first_time)
** Invoke config/initializers/secret_token.rb (first_time)
** Execute config/initializers/secret_token.rb
** Execute generate_secret_token
#

RAILS_ENV=productionを付けることで回避できました。
2.1.4では、この指定は不要だったのですが、Railsが3.2.8から3.2.9に上がったことが影響しているのかもしれません。

(12/24追記) redmine 2.2.0新規インストール時はエラーにならず

CentOS 6.3に新たにRedmine 2.2.0を入れてみましたが、generate_secret_tokenはRAILS_ENVを指定しなくてもエラーにはなりませんでした。