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/
これで問題なく ruby も python も、そして 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