Amazon Linuxでbundle installのエラーに対処する
こんにちは、虎塚です。
Amazon Linux上でRubyのスクリプトを実行しようとした時に、bundlerが動かないことがあります。今回はその場合の対処法を記述します。
環境
- AMI: amzn-ami-hvm-2015.03.0.x86_64-gp2 (ami-cbf90ecb)
- カーネル: 3.14.48-33.39.amzn1.x86_64
- ruby 2.0.0p645 (2015-04-13) [x86_64-linux]
現象
Amazon LinuxにSSHログインして、任意のディレクトリにGemfileを用意し、bundle installを実行します。この時、次のようなエラーが出る場合があります。
$ bundle install /usr/share/ruby/vendor_ruby/2.0/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- io/console (LoadError) from /usr/share/ruby/vendor_ruby/2.0/rubygems/core_ext/kernel_require.rb:55:in `require' from /home/ec2-user/.gem/ruby/2.0/gems/bundler-1.10.6/lib/bundler/vendor/thor/lib/thor/shell/basic.rb:2:in `<top (required)>' from /usr/share/ruby/vendor_ruby/2.0/rubygems/core_ext/kernel_require.rb:55:in `require' from /usr/share/ruby/vendor_ruby/2.0/rubygems/core_ext/kernel_require.rb:55:in `require' from /home/ec2-user/.gem/ruby/2.0/gems/bundler-1.10.6/lib/bundler/vendor/thor/lib/thor/shell/color.rb:1:in `<top (required)>' from /home/ec2-user/.gem/ruby/2.0/gems/bundler-1.10.6/lib/bundler/vendor/thor/lib/thor/shell.rb:17:in `shell' from /home/ec2-user/.gem/ruby/2.0/gems/bundler-1.10.6/lib/bundler/ui/shell.rb:14:in `initialize' from /home/ec2-user/.gem/ruby/2.0/gems/bundler-1.10.6/lib/bundler/cli.rb:12:in `new' from /home/ec2-user/.gem/ruby/2.0/gems/bundler-1.10.6/lib/bundler/cli.rb:12:in `rescue in start' from /home/ec2-user/.gem/ruby/2.0/gems/bundler-1.10.6/lib/bundler/cli.rb:10:in `start' from /home/ec2-user/.gem/ruby/2.0/gems/bundler-1.10.6/bin/bundle:20:in `block in <top (required)>' from /home/ec2-user/.gem/ruby/2.0/gems/bundler-1.10.6/lib/bundler/friendly_errors.rb:7:in `with_friendly_errors' from /home/ec2-user/.gem/ruby/2.0/gems/bundler-1.10.6/bin/bundle:18:in `<top (required)>' from /home/ec2-user/bin/bundle:23:in `load' from /home/ec2-user/bin/bundle:23:in `<main>'
対処法
エラーメッセージにしたがって、io-consoleをインストールします。
このとき、次のようなエラーが出て、インストールに失敗するかもしれません。
$ gem install io-console Fetching: io-console-0.4.2.gem (100%) Building native extensions. This could take a while... ERROR: Error installing io-console: ERROR: Failed to build gem native extension. /usr/bin/ruby2.0 extconf.rb mkmf.rb can't find header files for ruby at /usr/share/ruby/include/ruby.h Gem files will remain installed in /home/ec2-user/.gem/ruby/2.0/gems/io-console-0.4.2 for inspection. Results logged to /home/ec2-user/.gem/ruby/2.0/gems/io-console-0.4.2/./gem_make.out
これは、Module: MakeMakefile (Ruby 2.0.0)が必要とするruby.hが、Amazon Linuxに初期インストールされていないためです。
上記のエラーが出た場合は、先にruby-develをインストールします。
$ sudo yum install ruby-devel
これで、io-consoleをインストールできます。
$ gem install io-console Building native extensions. This could take a while... Successfully installed io-console-0.4.2 Parsing documentation for io-console-0.4.2 Installing ri documentation for io-console-0.4.2 Done installing documentation for io-console after 0 seconds 1 gem installed
以上で、bundle installが成功するようになります。
それでは、また。