[ WorkTool ] anyenv の導入

[ WorkTool ] anyenv の導入

はじめに

これまで開発環境を用意する際は、rbenv , plenv を利用してきましたが、それぞれインストールする必要があった為、anyenv でまとめてセットアップができるようにしてみました。

参考資料

GitHub にあるREADME を参考にします。

GitHub の README を参考に試してみます。
プラグインは anyenv 自体のアップデートに利用するようです。

GitHub – riywo/anyenv
GitHub – znz/anyenv-update
GitHub – znz/anyenv-git

ためしてみた

今回環境はOS:CentOS 6.5 64bit です。

# useradd develop
# su -l develop

anyenv をダウンロードします。
合わせてanyenv自体を管理するプラグインなどもダウンロードしておきます。

$ git clone https://github.com/riywo/anyenv ~/.anyenv
Initialized empty Git repository in ~/.anyenv/.git/
remote: Counting objects: 124, done.
remote: Total 124 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (124/124), 20.31 KiB | 15 KiB/s, done.
Resolving deltas: 100% (42/42), done.

$ cd ${anyenv_root}
$ git clone https://github.com/znz/anyenv-update.git plugins/anyenv-update
$ git clone https://github.com/znz/anyenv-git.git plugins/anyenv-git

ディレクトリ構成は下記です。
最近話題の言語、Go なんかも入っていました。

$ tree  ~/.anyenv/
~/.anyenv/
├── bin
│   └── anyenv -> ../libexec/anyenv
├── completions
│   ├── anyenv.bash
│   └── anyenv.zsh
├── envs
│   ├── goenv
│   ├── ndenv
│   ├── phpenv
│   ├── plenv
│   ├── pyenv
│   └── rbenv
├── libexec
│   ├── anyenv
│   ├── anyenv-commands
│   ├── anyenv-completions
│   ├── anyenv-envs
│   ├── anyenv-global
│   ├── anyenv-help
│   ├── anyenv-init
│   ├── anyenv-install
│   ├── anyenv-local
│   ├── anyenv-root
│   ├── anyenv-version
│   ├── anyenv---version
│   └── anyenv-versions
├── plugins
│   ├── anyenv-git
│   └── anyenv-update
├── README.md
└── share
    └── anyenv-install

普段使っているSHELLにおまじないをしておきます。

$ echo 'export PATH="$HOME/.anyenv/bin:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(anyenv init -)"' >> ~/.bash_profile

使いたい環境をインストールします。
一つ一つ実行するのも手間なので、for で一気に回します。

$ for x in rb pl py nd ; do
> echo "==========> Install ${x}env <=========="
> anyenv install ${x}env
> done
==========> Install rbenv <==========
/tmp/rbenv.20140821000352.3478 ~
Cloning https://github.com/sstephenson/rbenv.git...
Initialized empty Git repository in /tmp/rbenv.20140821000352.3478/rbenv/.git/
remote: Counting objects: 1889, done.
remote: Total 1889 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (1889/1889), 297.15 KiB | 130 KiB/s, done.
Resolving deltas: 100% (1182/1182), done.
~
~/.anyenv/envs/rbenv/plugins ~
Cloning https://github.com/sstephenson/ruby-build.git...
Initialized empty Git repository in ~/.anyenv/envs/rbenv/plugins/ruby-build/.git/
remote: Counting objects: 3589, done.
remote: Compressing objects: 100% (40/40), done.
remote: Total 3589 (delta 20), reused 3 (delta 0)
Receiving objects: 100% (3589/3589), 624.41 KiB | 231 KiB/s, done.
Resolving deltas: 100% (1729/1729), done.
~

Install rbenv succeeded!
Please reload your profile (exec $SHELL -l) or open a new session.
==========> Install plenv <==========
/tmp/plenv.20140821000427.3507 ~
Cloning https://github.com/tokuhirom/plenv.git...
Initialized empty Git repository in /tmp/plenv.20140821000427.3507/plenv/.git/
remote: Counting objects: 1837, done.
remote: Total 1837 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (1837/1837), 1.68 MiB | 383 KiB/s, done.
Resolving deltas: 100% (522/522), done.
~
~/.anyenv/envs/plenv/plugins ~
Cloning https://github.com/tokuhirom/Perl-Build.git...
Initialized empty Git repository in ~/.anyenv/envs/plenv/plugins/perl-build/.git/
remote: Counting objects: 768, done.
Receiving objects: 100% (768/768), 1.44 MiB | 159 KiB/s, done.
remote: Total 768 (delta 0), reused 0 (delta 0)
Resolving deltas: 100% (348/348), done.
~

Install plenv succeeded!
Please reload your profile (exec $SHELL -l) or open a new session.
==========> Install pyenv <==========
/tmp/pyenv.20140821000511.3536 ~
Cloning https://github.com/yyuu/pyenv.git...
Initialized empty Git repository in /tmp/pyenv.20140821000511.3536/pyenv/.git/
remote: Counting objects: 7406, done.
remote: Total 7406 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (7406/7406), 1.25 MiB | 303 KiB/s, done.
Resolving deltas: 100% (5513/5513), done.
~

Install pyenv succeeded!
Please reload your profile (exec $SHELL -l) or open a new session.
==========> Install ndenv <==========
/tmp/ndenv.20140821000529.3558 ~
Cloning https://github.com/riywo/ndenv.git...
Initialized empty Git repository in /tmp/ndenv.20140821000529.3558/ndenv/.git/
remote: Counting objects: 53, done.
remote: Total 53 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (53/53), done.
~
~/.anyenv/envs/ndenv/plugins ~
Cloning https://github.com/riywo/node-build.git...
Initialized empty Git repository in ~/.anyenv/envs/ndenv/plugins/node-build/.git/
remote: Counting objects: 34, done.
remote: Total 34 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (34/34), done.
~

Install ndenv succeeded!
Please reload your profile (exec $SHELL -l) or open a new session.

インストールされたか確認します。
ひとまずインストールできているようです。

$ exec $SHELL -l
$ anyenv version
ndenv: system (set by ~/.anyenv/envs/ndenv/version)
plenv: system (set by ~/.anyenv/envs/plenv/version)
pyenv: system (set by ~/.anyenv/envs/pyenv/version)
rbenv: system (set by ~/.anyenv/envs/rbenv/version)

試しに Python をインストールします。

$ pyenv install 3.4.0
Downloading Python-3.4.0.tgz...
-> http://yyuu.github.io/pythons/d2c83ea0217769a73e8b1ee33ffbca814903f8568e30f8d13e68e3d1f743449c
Installing Python-3.4.0...
Installed Python-3.4.0 to ~/.anyenv/envs/pyenv/versions/3.4.0
$ pyenv versions
* system (set by ~/.anyenv/envs/pyenv/version)
  3.4.0
$ pyenv global 3.4.0
$ pyenv rehash

Python のインストールまで確認できました。
anyenv を利用したセットアップは完了です。

$ which python
~/.anyenv/envs/pyenv/shims/python
$ python -V
Python 3.4.0

まとめ

anyenv を利用した開発環境をセットアップしてみました。
これまで個別にセットアップする必要があったのが、anyenv 一つで対応することでさらなる自動化が出来そうです。
セットアップ中はコーヒーでも飲みに行くことにします。

[amazonjs asin=”4774180343″ locale=”JP” title=”改訂3版 サーバ/インフラエンジニア養成読本 (Software Design plus)”]
[amazonjs asin=”4774179930″ locale=”JP” title=”サーバ/インフラエンジニア養成読本 DevOps編 Infrastructure as Code を実践するノウハウが満載! (Software Design plus)”]