dockerのUbuntuコンテナにrbenvをインストールする手順
docker の Ubuntu コンテナで Ruby 関連の実験をしたく、rbenv を導入したので手順をまとめます。docker hub の公式 Ruby コンテナは敢えて使わない方針です。
rbenv のインストール
apt-get update
して、git をインストール後、 git clone
します。
apt-get update
apt-get install git
git clone https://github.com/rbenv/rbenv.git ~/.rbenv
パスを通します。
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
source ~/.bash_profile
ruby-build が必要なので、 https://github.com/rbenv/ruby-build#installation を参考に git clone します。ruby-build はコマンドラインで Ruby の様々なバージョンを簡単にインストールするためのプラグインで、インストールすると rbenv install
コマンドが使えるようになります。
git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build
最後に rbenv が正常にインストールされたか、下記コマンドでチェックします。
curl -fsSL https://github.com/rbenv/rbenv-installer/raw/master/bin/rbenv-doctor | bash
rbenv -v
ruby のインストール
次のようなコマンドで好きなバージョンの ruby を指定してインストールできます。
rbenv install 2.5.1
インストールできるリストは次のコマンドでチェックできます。
rbenv install -l
インストール後、下記コマンドでインストールした ruby をセットします。
rbenv global 2.5.1
トラブルシューティング
docker の Ubuntu コンテナにインストールする際、ハマりどころが色々ありましたのでトラブルシューティングとしてメモしました。これで次回以降のインストールも余裕ですね!やったね!
rbenv shims の PATH が無くて怒られる
Checking for rbenv shims in PATH: not found The directory `/root/.rbenv/shims’ must be present in PATH for rbenv to work. Please run `rbenv init’ and follow the instructions.
rbenv は次のような感じになるよう、 shims の PATH を優先的に読ませる必要があります。
~/.rbenv/shims:/usr/local/bin:/usr/bin:/bin
~/.bash_profile に記述するか、 rbenv init
コマンドを SSH の都度実行する必要があります。 rbenv init
を毎回実行するのは面倒なので、次のように ~/.bash_profile に記述して、SSH の際に自動で rbenv init
が実行されるよう設定すると楽チンです。
echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
ruby-bulid が無くて怒られる
Checking `rbenv install’ support: not found Unless to plan to add Ruby versions manually, you should install ruby-build. Please refer to https://github.com/rbenv/ruby-build#installation
ruby-build はコマンドラインで Ruby の様々なバージョンを簡単にインストールするためのプラグインです。ruby-build を使うと、 rbenv install
コマンドが使えるようになります。
ruby-build は rbenv のディレクトリに git clone
してインストールします。
git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build
C コンパイラが無くて ruby のインストールに失敗する
docker の Ubuntu のコンテナなど、C コンパイラがインストールされていないマシンではインストールに失敗します。Ruby はもともと C 言語で作られている言語だからです。
BUILD FAILED (Ubuntu 18.04 using ruby-build 20180822-8-g336584c)
Inspect or clean up the working tree at /tmp/ruby-build.20180904233402.4696 Results logged to /tmp/ruby-build.20180904233402.4696.log
Last 10 log lines: checking for ruby… false checking build system type… x86_64-pc-linux-gnu checking host system type… x86_64-pc-linux-gnu checking target system type… x86_64-pc-linux-gnu checking for gcc… no checking for cc… no checking for cl.exe… no configure: error: in `/tmp/ruby-build.20180904233402.4696/ruby-2.5.1’: configure: error: no acceptable C compiler found in $PATH See `config.log’ for more details
C コンパイラは次のコマンドでインストールできます。
apt-get install build-essential
依存関係のライブラリがないっつって怒られる
例えば次のような感じのエラー。指示通り apt-get install -y libreadline-dev zlib1g-dev
でインスールします。
BUILD FAILED (Ubuntu 18.04 using ruby-build 20180822-8-g336584c)
Inspect or clean up the working tree at /tmp/ruby-build.20180904234436.5583 Results logged to /tmp/ruby-build.20180904234436.5583.log
Last 10 log lines: installing capi-docs: /root/.rbenv/versions/2.5.1/share/doc/ruby The Ruby readline extension was not compiled. The Ruby zlib extension was not compiled. ERROR: Ruby install aborted due to missing extensions Try running `apt-get install -y libreadline-dev zlib1g-dev` to fetch missing dependencies.
Configure options used: –prefix=/root/.rbenv/versions/2.5.1 LDFLAGS=-L/root/.rbenv/versions/2.5.1/lib CPPFLAGS=-I/root/.rbenv/versions/2.5.1/include
Ruby のインストールに成功したっぽいけど、ruby コマンドがないとか言われる
例えば下記の文字。 ruby -v
などでバージョンを確認した時に表示されるエラーです。
rbenv: ruby: command not found
The `ruby’ command exists in these Ruby versions: 2.5.1
rbenv はインストールした ruby のバージョンを指定する必要があるので、下記コマンドでセットします。
rbenv global 2.5.1