Screaming Loud

日々是精進

anyenvでphpenvとかpyenvとかenv系をまとめて管理する

実行環境

phpenvが入らない

phpのバージョンを管理するphpenvを入れようと

brew install phpenv
brew install php-build

をしたところ、phpenvが動かなかった*1ために、anyenvを入れることにしました。

anyenvはphpだけではなく、ruby, python, perl, nodeなどenv系をまとめていれることができます。

ほぼ、欲張り?anyenvでモダンな開発環境構築。PHP,NodeJS,Ruby,Perl,Python - Qiitaを参考にして、いれました。

anyenvの導入

まず、
自分のローカルに入っているenv系を削除します。

brew remove phpenv
brew remove rbenv

env系が削除できたら、

git clone https://github.com/riywo/anyenv ~/.anyenv

次に、パスを追加します。
今まで入れていたenv系はコメントアウトして、 ~/.zshenv に以下を書き加えました。

if [ -d $HOME/.anyenv ] ; then
    export PATH="$HOME/.anyenv/bin:$PATH"
    eval "$(anyenv init -)"
    # tmux対応
    for D in `\ls $HOME/.anyenv/envs`
    do
        export PATH="$HOME/.anyenv/envs/$D/shims:$PATH"
    done
fi

その後は、再読み込みです。

source ~/.zshenv

ここでanyenvを使い、インストールします。

$ anyenv install plenv
$ anyenv install pyenv
$ anyenv install rbenv
$ anyenv install phpenv

ただこのままだと、自分の環境では以下の様に、plenvとpyenvが入りませんでした。

phpenv:
* system (set by /Users/yuto/.anyenv/envs/phpenv/version)
plenv:
/Users/yuto/.anyenv/libexec/anyenv-versions: line 12: plenv: command not found

pyenv:
/Users/yuto/.anyenv/libexec/anyenv-versions: line 12: pyenv: command not found

rbenv:
* system (set by /Users/yuto/.anyenv/envs/rbenv/version)

そこで、以下のanyenvのプラグインを入れることで解決しました。

$ mkdir -p $(anyenv root)/plugins
$ git clone https://github.com/znz/anyenv-update.git $(anyenv root)/plugins/anyenv-update
$ anyenv update
$ git clone git://github.com/aereal/anyenv-exec.git $(anyenv root)/plugins/anyenv-exe
$ git clone https://github.com/znz/anyenv-git.git $(anyenv root)/plugins/anyenv-git
$ anyenv git gc
$ anyenv versions
phpenv:
* system (set by /Users/yuto/.anyenv/envs/phpenv/version)
plenv:
* system (set by /Users/yuto/.anyenv/envs/plenv/version)
pyenv:
* system (set by /Users/yuto/.anyenv/envs/pyenv/version)
rbenv:
* system (set by /Users/yuto/.anyenv/envs/rbenv/version)

ここからは、インストールするだけです。

$phpenv install 5.6.9
phpenv versions
* system (set by /Users/yuto/.anyenv/envs/phpenv/version)
  5.6.9
$ phpenv global 5.6.9
$ phpenv versions
  system
* 5.6.9 (set by /Users/yuto/.anyenv/envs/phpenv/version)

このままだと、

$ php -v
PHP 5.5.27 (cli) (built: Jul 23 2015 00:21:59) 
Copyright (c) 1997-2015 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2015 Zend Technologies

なので、以下操作で反映されました。
多分、どこかでzshenvの再読み込みを忘れていたようです。

$ source .zshenv
$ php -v
PHP 5.6.9 (cli) (built: Sep 28 2015 23:38:48) 
Copyright (c) 1997-2015 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2015 Zend Technologies
    with Zend OPcache v7.0.4-dev, Copyright (c) 1999-2015, by Zend Technologies
    with Xdebug v2.3.3, Copyright (c) 2002-2015, by Derick Rethans

*1:具体的には、./phpenv以下にbinファイルが作られなかった