2018年2月17日土曜日

gem update すると、Unable to require openssl エラー

CentOS7 環境に Ruby on Rails を構築する過程で gem update を行うと、Unable to require openssl エラーが発生した。

■ 今回の作業
  • Ruby と依存関係のあるパッケージを yum install
  • Ruby 2.5.0 を make install(yum のリポジトリだと古いため)
  • gem update

■ エラーメッセージ
# gem update --no-document
Updating installed gems
ERROR:  While executing gem ... (Gem::Exception)
    Unable to require openssl, install OpenSSL and rebuild Ruby (preferred) or use non-HTTPS sources

■ 環境の詳細
  • 環境:DTIのServersMan@VPS CentOS7(64bit版)

直接の原因は、openssl-devel パッケージがインストールされていないことなのだが、手順通り入れたはず。。確認したところ、以下の2つが initscripts が原因のエラーで中断されていた。
  • yum update
  • yum install openssl-devel

■ エラーメッセージ
# yum update
(中略)
Error: systemd conflicts with initscripts-9.49.17-1.el7_0.1.x86_64
 You could try using --skip-broken to work around the problem
 You could try running: rpm -Va --nofiles --nodigest

これは仮想化環境の障害対策として、initscripts パッケージの更新をブロックされているため。
http://www-wp.dream.jp/search.php/?p=23141

メッセージ通り、依存性エラーをスキップしてみると、
  • yum update --skip-broken
  • yum --skip-broken install openssl-devel

ダメだ、openssl-devel は依然として install 完了しない。
DTIでは障害対策として initscripts の update を止めているので、yum を使用して解決することは難しい。
必要であれば、make install か、CentOS6 を選択するしかなさそう。