【Homebrew版】`rbenv install -l`のリストが新しくならない場合の対処

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](https://github.com/rbenv/ruby-build/issues/676)

検索してみると`~/.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](https://github.com/rbenv/ruby-build/issues/676#issuecomment-68971632)

先程の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](https://qiita.com/d_forest/items/43fbd0257dea712aa067)