anyenvをインストール2

anyenvをインストール&Homebrewでインストール済のrbenvと互換を取る - 別館 子子子子子子(ねこのここねこ)
の続きです。

リンクを最低限にしたほうが対応しやすいはず

さきほど書いた対応ではリンクを最低3つ張れば対応出来ます。でも、 **env 一つ当たりリンクを3つ作る、のは少し面倒です。
また、プラグインを入れることにより .rbenv フォルダ内のファイルが増える場合があります。
例えば rbenv-communal-gems プラグインを入れれば .rbenv/gems フォルダが増えます。
そして rbenv-default-gems プラグインを入れた場合の設定は .rbenv/default-gems ファイルに書き込みます。
となると、ものが増える度にリンクを増やさなきゃいけなくなる…キリがありません。

Homebrew依存でのインストール状況から変更しよう

Homebrew でインストールした rbenv 及び pyenv で環境を作ってあるとします。そして、さらに anyenv をインストールした状況だとします。

Homebrewでインストールしたrbenvなどをアンインストール

.rbenv 及び .pyenv は残りますのでご安心ください。

$ brew uninstall rbenv
Uninstalling /usr/local/Cellar/rbenv/0.4.0...
$ brew uninstall ruby-build
Uninstalling /usr/local/Cellar/ruby-build/20141016...
$ brew uninstall pyenv pyenv-pip-rehash
Uninstalling /usr/local/Cellar/pyenv/20141012...
Uninstalling /usr/local/Cellar/pyenv-pip-rehash/0.0.4...
rbenv

いまある .rbenv を退避させてから再インストールし、退避したところから移動させましょう。
.rbenv/completions 以外を移動させれば良いはずです。

$ mv .rbenv .rbenv.bak
$ git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
Cloning into '/Users/riocampos/.rbenv'...
remote: Counting objects: 1982, done.
remote: Compressing objects: 100% (61/61), done.
remote: Total 1982 (delta 30), reused 0 (delta 0)
Receiving objects: 100% (1982/1982), 322.12 KiB | 130.00 KiB/s, done.
Resolving deltas: 100% (1228/1228), done.
Checking connectivity... done.

先ほどの記事でリンクを張ったファイル/フォルダを移動します。

$ mv ~/.rbenv.bak/shims ~/.rbenv.bak/version ~/.rbenv.bak/versions ~/.rbenv

プラグインももちろん移動します。

$ mv ~/.rbenv.bak/plugins ~/.rbenv

私の環境では rbenv-communal-gems プラグインを入れているので gems フォルダも移動します。

$ mv ~/.rbenv.bak/gems ~/.rbenv

もしも rbenv-default-gems プラグインを入れている場合には default-gems ファイルも移動しましょう。
必要なファイルやフォルダを移動しきったあとの .rbenv.bak は不要なので削除します。

$ rm -rf .rbenv.bak

最後にリンクを張ります。

$ ln -s ~/.rbenv/ ~/.anyenv/envs/rbenv

あとは必要なプラグインを Homebrew ではなく git clone でインストールしましょう。
少なくとも rbenv-gem-rehashは入れておきましょう。

pyenv

rbenv と同様の作業を行います。

$ mv .pyenv .pyenv.bak
$ git clone git://github.com/yyuu/pyenv.git ~/.pyenv
Cloning into '/Users/riocampos/.pyenv'...
remote: Counting objects: 7654, done.
remote: Compressing objects: 100% (69/69), done.
remote: Total 7654 (delta 37), reused 1 (delta 0)
Receiving objects: 100% (7654/7654), 1.33 MiB | 451.00 KiB/s, done.
Resolving deltas: 100% (5645/5645), done.
Checking connectivity... done.
$ mv ~/.pyenv.bak/shims ~/.pyenv.bak/version ~/.pyenv.bak/versions ~/.pyenv

今回インストールした .pyenv フォルダのプラグインフォルダにも既に python-build が入っています。このままでは移動できないので削除しておきます。

$ rm -rf ~/.pyenv/plugins 
$ mv ~/.pyenv.bak/plugins ~/.pyenv

もう .pyenv.bak は不要なので削除します。

$ rm -rf .pyenv.bak

最後にリンクを張ります。

$ ln -s ~/.pyenv/ ~/.anyenv/envs/pyenv

あとは必要なプラグインを Homebrew ではなく git clone でインストールしましょう。
少なくとも pyenv-pip-rehash は入れておきましょう。

ndenvなど

anyenv を入れるまで ndenv は入れていなかったので、 anyenv に全て任せることにします。
その他の **env に関しても同様です。もしも anyenv をインストールするまでに他の **env をインストールしていた場合も、上記の rbenv や pyenv と同様の作業を行えば良いと思います。

~/.anyenv/envs/の構成

$ ls -lF ~/.anyenv/envs/
total 16
drwxr-xr-x  13 riocampos  staff  442 10 19 18:18 ndenv/
lrwxr-xr-x   1 riocampos  staff   19 10 19 22:34 pyenv@ -> /Users/riocampos/.pyenv/
lrwxr-xr-x   1 riocampos  staff   19 10 19 22:19 rbenv@ -> /Users/riocampos/.rbenv/

これで問題なく rubypython も、そして rbenv も pyenv も動くはずですが、念のため確認して置いて下さい。

$ rbenv global 2.1.3 
$ ruby -v
ruby 2.1.3p242 (2014-09-19 revision 47630) [x86_64-darwin13.0]
$ pyenv global 2.7.8 3.4.2
$ python2 --version
Python 2.7.8
$ python3 --version
Python 3.4.2