Homebrewで入れたrbenvのrbenv install -l
のリストが新しくならないときの対処法です。調べるとbrew upgrade
するか、~/.rbemv/plugins
を消すかの対処法が主に出てきますが、今回はどちらでも治りませんでした。
同様の事象で悩める民の参考になれば。
対処方法
結論からいうと、rbenvとruby-buildをアンインストール/インストールしました。
自分の場合はアンインストール/インストールしても、すでに入っているrbenvの設定やrubyのバージョンはそのまま残り、大きな問題は起きませんでした。
# アンインストール
$ brew uninstall rbenv
$ brew uninstall ruby-build
# インストール
$ brew install rbenv ruby-build
ただ、アンインストール時に少し注意が必要だったので、経緯とともに簡単に説明します。
対処の経緯
rbenv istall -l
が更新されない
新しいrubyのバージョンをインストールしたくてrbenv istall -l
するも、最近のバージョンが出てこない。例のごとく、バージョンリストを更新するコマンドを実行しました。
$ brew update Already up-to-date.
$ brew upgrade rbenv
Error: rbenv 1.1.1 already installed
$ brew upgrade ruby-build
Error: ruby-build 20181019 already installed
しかし再度rbenv istall -l
しても更新する前のバージョンリストと変わらない。何度か更新コマンドを実行しても上記のようにどう見ても更新されている。
ruby-build --definitions
も更新されない
If you opted to install ruby-build via Homebrew, and nothing's wrong with that, you should remove ~/.rbenv/plugins/ruby-build which is where I'm guessing the stale definitions are coming from.
rbenv install --list does not include all versions from ruby-build --definitions · Issue #676 · rbenv/ruby-build
検索してみると~/.rbenv/plugins
ディレクトリを削除するという対処があるものの、この対処方法はgit clone
をしてrbenvをインストールしている場合の対処方法らしい。
念の為~/.rbenv/plugins
を確認してみるが、このディレクトリ自体が存在しない。
Do you have the same problem: rbenv install --list not being equal to ruby-build --definitions?
rbenv install --list does not include all versions from ruby-build --definitions · Issue #676 · rbenv/ruby-build
先程のIssueを読み進めてみると、rbenv istall -l
とruby-build --definitions
は一致するはずらしい。
実行してみると、ruby-build --definitions
もバージョンリストが古いままだった。upgradeはできてるはずなのにバージョンリストが新しくなっていない。何かがおかしい。
決死の覚悟でアンインストール/インストール
もうこれはアンインストール/インストールしかないと思い、決死の覚悟でアンインストールしてみる。何も起きませんように。。
$ brew uninstall rbenv
Uninstalling /usr/local/Cellar/rbenv/1.1.1... (36 files, 62.8KB)
rbenv 0.4.0 is still installed.
Remove all versions with `brew uninstall --force rbenv`.
$ brew uninstall rbenv
Uninstalling /usr/local/Cellar/rbenv/0.4.0... (32 files, 49.7KB)
$ brew uninstall ruby-build
Uninstalling /usr/local/Cellar/ruby-build/20181019... (417 files, 210.8KB)
ruby-build 20150519, 20141128 and 20150818 are still installed.
Remove all versions with `brew uninstall --force ruby-build`.
$ brew uninstall ruby-build
Error: ruby-build has multiple installed versions
Use `brew uninstall --force ruby-build` to remove all versions.
$ brew uninstall --force ruby-build
Uninstalling ruby-build... (469 files, 294.8KB)
実行ログを見てみると、rbenv/ruby-buildどちらも複数バージョンが入ってしまっていたっぽい。おそらくコマンドが古いバージョンを参照してしまっていたっぽい。
rbenvは2回brew uninstall rbenv
で問題なく消え去ったが、ruby-buildは2回目のbrew uninstall ruby-build
がエラーになったので、ログに出ていたbrew uninstall --force ruby-build
を実行したらキレイになった。
あとは再度インストールコマンドを実行。
$ brew install rbenv ruby-build
無事インストール完了。rbenv istall -l
を実行するとバージョンリストが更新された!やったね!
アンインストール前のrbenvの設定や、rbenvで管理していたrubyのバージョンは全部そのまま残っていて、今のところは問題なく動作中です。
よかったよかった。
brew update
ができない場合の対処
そもそもbrew update
ができない場合は下記を参考にどうぞ。
MacOS High SierraでHomebrewの更新(brew update
)ができない場合の対処 - Qiita