rbenvとruby-buildによるRuby環境構築
はじめに
久しぶりにRubyに関する記事を書きます。
rbenvでRubyを導入・更新する方法をよく忘れるのですが、そのたび調べているのがばからしくなってきたので、自分のための忘備録として作業手順をまとめておきたいと思います。
この記事はUbuntu 14.04.2 LTSにrbenv公式のインストール手順に沿って行った操作を記録したものです。
rbenvとruby-buildによるRubyのインストール
rbenvとruby-buildを使うとRubyのバージョンを切り替えて使うことができて便利だということでインストールします。
githubからrbenvとruby-buildを取得します。
yosuke@fusion:~$ git clone https://github.com/sstephenson/rbenv.git ~/.rbenv yosuke@fusion:~$ git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
bashの設定ファイル.bashrcにrbenvのパスを登録し、bash設定をsourceコマンドで再び読み込みます。
コマンド情報を表示するtypeコマンドを使ってインストールができたかを確認するように手順に書いてあったので、typeを実行していますがTabキーの補完が効いたらインストールできているはず。
yosuke@fusion:~$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc yosuke@fusion:~$ echo 'eval "$(rbenv init -)"' >> ~/.bashrc yosuke@fusion:~$ source .bashrc yosuke@fusion:~$ type rbenv rbenv は関数です rbenv () { local command; command="$1"; if [ "$#" -gt 0 ]; then shift; fi; case "$command" in rehash | shell) eval "`rbenv "sh-$command" "$@"`" ;; *) command rbenv "$command" "$@" ;; esac } yosuke@fusion:~$
ちなみに見つからなかった場合(パスが通っていない場合)は以下のように表示されます。
yosuke@fusion:~$ type rbenv bash: type: rbenv: 見つかりません
インストール可能なRubyの一覧を表示します。
yosuke@fusion:~$ rbenv install -l Available versions: 1.8.6-p383 1.8.6-p420 1.8.7-p249 1.8.7-p302 1.8.7-p334 1.8.7-p352 1.8.7-p357 1.8.7-p358 1.8.7-p370 1.8.7-p371 1.8.7-p374 1.8.7-p375 1.9.1-p378 1.9.1-p430 1.9.2-p0 1.9.2-p180 1.9.2-p290 1.9.2-p318 1.9.2-p320 1.9.2-p326 1.9.2-p330 1.9.3-dev 1.9.3-preview1 1.9.3-rc1 1.9.3-p0 1.9.3-p125 1.9.3-p194 1.9.3-p286 1.9.3-p327 1.9.3-p362 1.9.3-p374 1.9.3-p385 1.9.3-p392 1.9.3-p429 1.9.3-p448 1.9.3-p484 1.9.3-p545 1.9.3-p547 1.9.3-p550 1.9.3-p551 2.0.0-dev 2.0.0-preview1 2.0.0-preview2 2.0.0-rc1 2.0.0-rc2 2.0.0-p0 2.0.0-p195 2.0.0-p247 2.0.0-p353 2.0.0-p451 2.0.0-p481 2.0.0-p576 2.0.0-p594 2.0.0-p598 2.0.0-p643 2.0.0-p645 2.1.0-dev 2.1.0-preview1 2.1.0-preview2 2.1.0-rc1 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.2.0-dev 2.2.0-preview1 2.2.0-preview2 2.2.0-rc1 2.2.0 2.2.1 2.2.2 2.3.0-dev jruby-1.5.6 jruby-1.6.3 jruby-1.6.4 jruby-1.6.5 jruby-1.6.5.1 jruby-1.6.6 jruby-1.6.7 jruby-1.6.7.2 jruby-1.6.8 jruby-1.7.0-preview1 jruby-1.7.0-preview2 jruby-1.7.0-rc1 jruby-1.7.0-rc2 jruby-1.7.0 jruby-1.7.1 jruby-1.7.2 jruby-1.7.3 jruby-1.7.4 jruby-1.7.5 jruby-1.7.6 jruby-1.7.7 jruby-1.7.8 jruby-1.7.9 jruby-1.7.10 jruby-1.7.11 jruby-1.7.12 jruby-1.7.13 jruby-1.7.14 jruby-1.7.15 jruby-1.7.16 jruby-1.7.16.1 jruby-1.7.16.2 jruby-1.7.17 jruby-1.7.18 jruby-1.7.19 jruby-9.0.0.0-dev jruby-9.0.0.0+graal-dev jruby-9.0.0.0.pre1 jruby-9.0.0.0.pre2 maglev-1.0.0 maglev-1.1.0-dev maglev-2.0.0-dev mruby-dev mruby-1.0.0 mruby-1.1.0 rbx-1.2.4 rbx-2.0.0-dev rbx-2.0.0-rc1 rbx-2.0.0 rbx-2.1.0 rbx-2.1.1 rbx-2.2.0 rbx-2.2.1 rbx-2.2.2 rbx-2.2.3 rbx-2.2.4 rbx-2.2.5 rbx-2.2.6 rbx-2.2.7 rbx-2.2.9 rbx-2.2.10 rbx-2.3.0 rbx-2.4.0 rbx-2.4.1 rbx-2.5.0 rbx-2.5.1 rbx-2.5.2 ree-1.8.6-2009.06 ree-1.8.7-2009.09 ree-1.8.7-2009.10 ree-1.8.7-2010.01 ree-1.8.7-2010.02 ree-1.8.7-2011.03 ree-1.8.7-2011.12 ree-1.8.7-2012.01 ree-1.8.7-2012.02 topaz-dev yosuke@fusion:~$ rbenv install 2.2.2
インストール時最新のRubyである2.2.2をインストールすることにします。
yosuke@yosuke-vm:~/.rbenv$ rbenv install 2.2.2 Downloading ruby-2.2.2.tar.gz... -> http://dqw8nmjcqpjn7.cloudfront.net/5ffc0f317e429e6b29d4a98ac521c3ce65481bfd22a8cf845fa02a7b113d9b44 Installing ruby-2.2.2... BUILD FAILED (Ubuntu 14.04 using ruby-build 20150413-7-ge9d25d0) Inspect or clean up the working tree at /tmp/ruby-build.20150420201210.2795 Results logged to /tmp/ruby-build.20150420201210.2795.log Last 10 log lines: rake 10.4.2 rdoc 4.2.0 skip installing bundle gems because of lacking zlib installing rdoc: /home/yosuke/.rbenv/versions/2.2.2/share/ri/2.2.0/system installing capi-docs: /home/yosuke/.rbenv/versions/2.2.2/share/doc/ruby The Ruby openssl extension was not compiled. Missing the OpenSSL lib? Configure options used: --prefix=/home/yosuke/.rbenv/versions/2.2.2 LDFLAGS=-L/home/yosuke/.rbenv/versions/2.2.2/lib CPPFLAGS=-I/home/yosuke/.rbenv/versions/2.2.2/include yosuke@yosuke-vm:~/.rbenv$
しかし、インストール途中で「OpenSSLが無い」というエラーが出てインストールに失敗します。
調べると、linssl-devが足りない場合にこのようなエラーが起こるようです。
libssl-devをインストールすると今度は成功します。
yosuke@yosuke-vm:~/.rbenv$ rbenv install 2.2.2 Downloading ruby-2.2.2.tar.gz... -> http://dqw8nmjcqpjn7.cloudfront.net/5ffc0f317e429e6b29d4a98ac521c3ce65481bfd22a8cf845fa02a7b113d9b44 Installing ruby-2.2.2... Installed ruby-2.2.2 to /home/yosuke/.rbenv/versions/2.2.2 yosuke@yosuke-vm:~/.rbenv$
使用するRubyのバージョンを設定します。
yosuke@fusion:~$ rbenv global 2.2.2 yosuke@fusion:~$ ruby -v ruby 2.2.2p95 (2015-04-13 revision 50295) [x86_64-linux] yosuke@fusion:~$
バージョンを設定しないとRubyは使えないので以下のように表示されます。
yosuke@fusion:~$ ruby -v rbenv: version `system' is not installed
以上でインストールは完了です。
スーパーユーザー権限でRubyを使用する設定
上記インストールのままだとスーパーユーザー権限でrubyが起動できず、以下のようなエラーが表示されます。
yosuke@fusion:~$ sudo rbenv sudo: rbenv: command not found yosuke@fusion:~$ yosuke@fusion:~$ sudo rbenv sudo: rbenv: command not found yosuke@fusion:~$
調べると、sudoのパス設定が記述された/etc/sudoersを編集してsudo実行ユーザーのパスを引き継ぐ方法が見つかったので実施しました。
他にも方法があるかもしれません。
visudoコマンドを実行すると/etc/sudoersをnanoエディタで開かれます。
yosuke@fusion:~$ sudo visudo
設定ファイルを以下の内容に変更します(secure_pathの行をコメントアウトし、env_keepの行を追記します)。
# This file MUST be edited with the 'visudo' command as root. # # Please consider adding local content in /etc/sudoers.d/ instead of # directly modifying this file. # # See the man page for details on how to write a sudoers file. # Defaults env_reset Defaults mail_badpass #Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:$ Defaults env_keep += "PATH" # Host alias specification # User alias specification # Cmnd alias specification