Ruby初心者がrbenvを使ってRubyのバージョンアップを試みる
環境 ツール : vagrant OS : Ubuntu-trusty-64
問題
rubyのバージョンを確認したところ1.9.3となっていた(2020年7月の最新は2.8.0)
$ ruby -v >> ruby 1.9.3p484 (2013-11-22 revision 43786) [x86_64-linux]
あまりに古いのでrubyのバージョンアップを試してみる。
rbenvで最新のRubyのバージョンが表示されない件
バージョン管理のためにrbenvでインストール。
$ rbenv install -l >> Available versions: 1.8.6-p383 ~ 1.9.3-preview1 1.9.3-rc1 2.0.0-dev
すると、2.0.0までしか表示されなかった。
ググってみると先人たちが解決方法を記載していてくれた。
▼Ruby 2.3.0がrbenvに表示されない時にやったこと - Qiita
▼rbenvでRubyのバージョンアップをする(for Mac) - Qiita
rbenv, ruby-buildをアップグレード
まずはrbenv
とruby-build
をアップグレードするようだ。
$ apt-gent upgrade rbenv ruby-build
>>
rbenv is already the newest version.
ruby-build is already the newest version.
二つとも最新になっているようだ。
しかし、rbenv install -l
をしても2.0.0しか表示されない。
では次の方法。
rbenvをGit pullする
次はGitから最新の
rbenvを
pull`してみる。
rbenv/plugins/ruby-build: No such file or directory問題
$ cd ~/.rbenv/plugins/ruby-build >> bash: cd: /root/.rbenv/plugins/ruby-build: No such file or directory
むむ。
ディレクトリが見つからないらしい。
ルートの隠しファイルを見ても見つからない。
そもそも.rbenv
自体がない。
alreadyと表示されていたのになぜだ。
試しにwhich
してみる。
$ which rbenv
>>
/usr/bin/rbenv
うむ、rbenvは存在するけれどもrootにいない?
これは…pathの問題だろうか?
rbenvを入れなおす
apt-get update
しても改善されなかったので下記のQiitaを参考にrbenvをgit cloneしてみる。
▼CentOSにrbenv, Rubyをインストールする - Qiita
$ git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
ルートディレクトリに.rbenv
を作成しその中にcloneするようだ。
自分でrootに.rbenvを作らなければいけなかったのか。
$ ls -d ~/.rbenv >> /root/.rbenv
中身を確認しても~/.rbenv/plugins/ruby-build
のようなディレクトリは存在しなかった。
これも自分で作成するようなのでruby-build
もgit clone
する。
$ git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
これで.rbenv
にplugin
のディレクトリが作成され、準備が整った。
作成した/.rbenv/plugins/ruby-build
に移動しgit pullしてみる。
$ cd ~/.rbenv/plugins/ruby-build
$ git pull
Already up-to-date.
と表示されたらrbenvのアップデート完了
rbenv install -l
をしてみるとたくさんのバージョンが確認できる。
>> Available versions: 1.8.5-p52 ~ 2.7.1 2.8.0-dev
rbenv installするとruby-buildのヘルプが表示される件
これでRubyのバージョンを上げられると思いインストールを試すと
$ rbenv install 2.7.1 Usage: ruby-build [-kpv] <definition> <prefix> ruby-build --definitions ruby-build --version -k/--keep Do not remove source tree after installation -p/--patch Apply a patch from stdin before building -v/--verbose Verbose mode: print compilation status to stdout -4/--ipv4 Resolve names to IPv4 addresses only -6/--ipv6 Resolve names to IPv6 addresses only --definitions List all local definitions -l/--list List latest stable releases for each Ruby --version Show version of ruby-build
このようにruby-buildの使い方が表示された。
ということでさらにググり続けたところrbenvはパスを通してから初期化をしないと使えないという記事を見かけた。
上記の記事に書かれていることがすべてだ。
rbenvのPathを通す
まずはrbenv
が使えるようにパスを通す。
$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
rbenv を初期化する。
次に/.rbenv/bin
に移動し、初期化する。
$ cd ~/.rbenv/bin $ rbenv init >> # Load rbenv automatically by adding # the following to ~/.bash_profile: eval "$(rbenv init -)"
eval "$(rbenv init -)"
これをするようにと表示されたのでやってみる。
※最終的に上記のコマンドだとうまく行きませんでした。 記事の最後に追記してあります。
$ eval "$(rbenv init -)"
特別なにも表示されなかったがエラーもでなかったので成功したようだ。
.bashrc
を再読み込みしてからもう一度Rubyのバージョンリストを確認してみる。
$ source ~./bashrc $ rbenv install -l >> 2.5.8 2.6.6 2.7.1 jruby-9.2.12.0 maglev-1.0.0 mruby-2.1.1 rbx-5.0 truffleruby-20.1.0 truffleruby+graalvm-20.1.0 Only latest stable releases for each Ruby implementation are shown. Use 'rbenv install --list-all' to show all local versions.
すると最新バージョンのみが表示されるようになった。
欲しかったのは2.7.1なのでインストールしてみる。
$ rbenv install 2.7.1 >> Downloading ruby-2.7.1.tar.bz2... -> https://cache.ruby-lang.org/pub/ruby/2.7/ruby-2.7.1.tar.bz2 Installing ruby-2.7.1... Installed ruby-2.7.1 to /home/vagrant/.rbenv/versions/2.7.1
できたっぽいぞ。
$ rbenv versions * system 2.7.1
2.7.1がいる!
global
を使って常に2.7.1を使用できるように指定する。
$ rbenv global 2.7.1 $ rbenv versions >> system * 2.7.1 (set by /home/vagrant/.rbenv/version)
vagrantからログアウトするとRubyのバージョンがもとに戻る件
このあとRubyのバージョンを確認したら2.7.1になっていたので満足してvagrantからログアウトした。
そして作業を再開しようとvagrantで接続したところ、Rubyのバージョンが1.9.3に戻っていた。
OMG
もう一度この方の記事を読んでみる。 ▼rbenvとruby環境の構築手順
すると、どうやら僕がやった'eval "$(rbenv init -)"'の部分が間違っていたようだ。
$ echo 'eval "$(rbenv init -)"' >> ~/.bashrc
~/.bashrc
に 'eval "$(rbenv init -)"`を書き込む必要があった。
そしてもう一度~/.bashrc
を再読み込みし、確認のため上記の記事にあったrbenv-doctor
を試してみる。
$ curl -fsSL https://github.com/rbenv/rbenv-installer/raw/master/bin/ rbenv-doctor | bash Checking for `rbenv' in PATH: multiple You seem to have multiple rbenv installs in the following locations. Please pick just one installation and remove the others. /home/vagrant/.rbenv/bin/rbenv /home/vagrant/.rbenv/bin/rbenv /home/vagrant/.rbenv/bin/rbenv /usr/bin/rbenv Checking for rbenv shims in PATH: OK Checking `rbenv install' support: /home/vagrant/.rbenv/plugins/ruby-build/bin/rbenv-install (ruby-build 20200722) Counting installed Ruby versions: 1 versions Checking RubyGems settings: OK Auditing installed plugins: OK
すべてOKになっているので大丈夫のようだ。
最後に設定を保存しなければいけない。
$ rbenv rehash
これでvagrantからログアウトし、再度ログインしてもRubyのバージョンが2.7.1に維持されるようになった。
めでたしめでたし。