方法
rbenv hooks という機能を使う。
以下、rbenv は ~/.rbenv
にインストールしていることを想定する。
まず ~/.rbenv/rbenv.d
に uninstall
という名前のディレクトリを作る。そして、そのディレクトリに .bash
という拡張子で任意の名前のファイルを作成する。
$ mkdir ~/.rbenv/rbenv.d/uninstall
$ vim ~/.rbenv/rbenv.d/uninstall/prevent_uninstall.bash
作成した .bash
ファイルの内容は次の通り。
~/.rbenv/rbenv.d/uninstall/prevent_uninstall.bash
# !/usr/bin/env bash
VERSIONS=(2.5.5 2.6.3)
SCRIPT=$(cat <<EOS
if [[ " ${VERSIONS[*]} " == *" $@ "* ]]; then
echo "Ruby $@ はアンインストールできません。アンインストールしたい場合は $BASH_SOURCE を削除してください。"
exit 1
fi
EOS
)
before_uninstall "$SCRIPT"
この状態で Ruby 2.6.3 をアンインストールしようとしてもできない。
$ rbenv uninstall 2.6.3
rbenv: remove /Users/quanon/.rbenv/versions/2.6.3? [yN] y
Ruby 2.6.3 はアンインストールできません。アンインストールしたい場合は /Users/quanon/.rbenv/rbenv.d/uninstall/prevent_uninstall.bash を削除してください。