rbenv を anyenv で管理する
rbenv や plenv などをまとめて管理する anyenv を使ってみました。
riywo/anyenv
https://github.com/riywo/anyenv
anyenv を使う事で、新しい *env 系コマンドを導入する度に初期化処理を .bash_profile に書く、といった作業から解放されます。
現在は以下のコマンドがサポートされているようです。
- rbenv
- plenv
- pyenv
- phpenv
- ndenv
rbenv は普段から使っていますが、同じ感覚で perl や python も複数バージョンを管理できるようになるのは便利ですね。
CentOS へのインストール
まずは CentOS 6.4(x86_64) + bash な環境に入れてみました。
$ cd $HOME $ git clone https://github.com/riywo/anyenv ~/.anyenv $ echo 'export PATH="$HOME/.anyenv/bin:$PATH"' >> ~/.bash_profile $ echo 'eval "$(anyenv init -)"' >> ~/.bash_profile $ exec $SHELL -l
これで anyenv コマンドが使用できるようになります。
引数無しで実行してみると以下のようにヘルプが表示されます。
$ anyenv anyenv Usage: anyenv <command> [<args>] Some useful anyenv commands are: commands List all available anyenv commands local Show the local application-specific Any version global Show the global Any version install Install a **env version Show the current Any version and its origin versions List all Any versions available to **env See `anyenv help <command>' for information on a specific command. For full documentation, see: https://github.com/riywo/anyenv#readme
次に以下のようにして各言語用のコマンドをインストールします。
$ anyenv install rbenv $ anyenv install plenv $ anyenv install pyenv $ anyenv install phpenv $ anyenv install ndenv
インストールが完了したら、.bash_profile を再読み込みします。
$ source ~/.bash_profile
anyenv version を実行するとインストールしたコマンドが一覧できます。
$ anyenv version ndenv: system (set by /home/akishin/.anyenv/envs/ndenv/version) phpenv: system (set by /home/akishin/.anyenv/envs/phpenv/version) plenv: system (set by /home/akishin/.anyenv/envs/plenv/version) pyenv: system (set by /home/akishin/.anyenv/envs/pyenv/version) rbenv: system (set by /home/akishin/.anyenv/envs/rbenv/version)
これで各コマンドには PATH が通っているので、以下のような感じで使う事が出来ます。
$ rbenv install -l
$ rbenv install 2.0.0-p195
コマンドを入れた後の ~/.anyenv は以下のようになっていました。
$home/.anyenv ├── README.md ├── bin │ └── anyenv -> ../libexec/anyenv ├── completions │ ├── anyenv.bash │ └── anyenv.zsh ├── envs │ ├── ndenv │ ├── phpenv │ ├── plenv │ ├── pyenv │ └── rbenv ├── libexec │ ├── anyenv │ ├── anyenv---version │ ├── anyenv-commands │ ├── anyenv-completions │ ├── anyenv-envs │ ├── anyenv-global │ ├── anyenv-help │ ├── anyenv-init │ ├── anyenv-install │ ├── anyenv-local │ ├── anyenv-root │ ├── anyenv-version │ └── anyenv-versions └── share └── anyenv-install
envs ディレクトリの下に各コマンドがインストールされているようです。
Ubuntu へのインストール
次は普段使っている Ubuntu 13.04(32bit) + zsh の環境にインストールしてみました。
この環境では既に rbenv を導入済みだったので、anyenv 導入後に管理化に追加してみます。
まずは anyenv のインストール。
% cd $HOME % git clone https://github.com/riywo/anyenv ~/.anyenv
以下のような感じで ~/.zshenv に anyenv の初期化処理を追記します。
% cat >> ~/.zshenv <<'_EOF_' # anyenv setup export PATH="$HOME/.anyenv/bin:$PATH" eval "$(anyenv init -)" _EOF_
また、既に導入済みだった rbenv の初期化処理の方は削除しておきました。
変更が完了したら .zshenv を再読み込み。
% source ~/.zshenv
これで anyenv コマンドが使えるようになります。
anyenv を使い始める前に、まずは既に導入済みの rbenv を anyenv 管理下に移したいところです。
~/.anyenv/envs 以下にディレクトリを置けばいいようだったので、試しに以下のようにシンボリックリンクを張ってみました。
% ln -s ~/.rbenv/ ~/.anyenv/envs/rbenv
anyenv がちゃんと rbenv を認識してくれるか確認してみます。
% anyenv version rbenv: 1.9.3-p392 (set by /home/akishin/.rbenv/version)
どうやらちゃんと認識されているようです。
あとは普通にその他のコマンドをインストール。
$ anyenv install plenv $ anyenv install pyenv $ anyenv install phpenv $ anyenv install ndenv
インストールが完了したら .zshenv を再読み込みします。
% source ~/.zshenv
確認してみます。
% anyenv version ndenv: system (set by /home/akishin/.anyenv/envs/ndenv/version) phpenv: system (set by /home/akishin/.anyenv/envs/phpenv/version) plenv: system (set by /home/akishin/.anyenv/envs/plenv/version) pyenv: system (set by /home/akishin/.anyenv/envs/pyenv/version) rbenv: 1.9.3-p392 (set by /home/akishin/.anyenv/envs/rbenv/version)
元から入っていた rbenv も問題なく共存できているようです。
これで Ruby 以外の言語でもいろいろなバージョンを気軽に試せる環境が手に入りました。
勉強もはかどる・・・といいなー。