もういろいろな開発が山程あってバージョンもあって辟易しているんじゃないですかね。もうanyenvを使う以外の選択肢は全くなくなった気がします。あるいは全部コンテナ化しちゃうか。そういう時代です。anyenvとはなんぞや?という方はこの情報は必要ないもしれないので、インストールの必要ないです。
とりあえず、node.js python, go, phpを頻繁に使うのでこれらのenvは必ず必要ということでanyenvになります。https://github.com/anyenv/anyenv
mac環境ということでzshを使う前提でインストールしてゆきます。ここ最近でだいぶアップデートされたっぽいので詳しい情報は本家のドキュメントを読んでおいたほうがよいと思います。
brewでインストールできるので、簡単です。
$ brew install anyenv
$ echo 'eval "$(anyenv init -)"' >> ~/.zshrc
$ anyenv init
$ exec $SHELL -l # シェルを再起動
$ anyenv install --init
より最新のanyenvが必要だったりbugfixやブランチが必要な場合はgithubからインストールした方がよいです。(個人的には断然こっちをおすすめします。)2021-09-19現在ではanyenv 1.1.4
です。
$ git clone https://github.com/anyenv/anyenv ~/.anyenv
$ echo 'export PATH="$HOME/.anyenv/bin:$PATH"' >> ~/.zshrc
$ echo 'eval "$(anyenv init -)"' >> ~/.zshrc
$ ~/.anyenv/bin/anyenv init
$ exec $SHELL -l
$ anyenv install --init
cloneすると.anyenv
というディレクトリが作成されます。それぞれパスを通してやってevelを追記します。
以下実行するとanyenv install --init
を実行しなさいということで実行して完了です。
$ exec $SHELL -l
ANYENV_DEFINITION_ROOT(/Users/USER_NAME/.config/anyenv/anyenv-install) doesn't exist. You can initialize it by:
> anyenv install --init
githubでcheckoutするかみたいなメッセージはyesにしておいてよいです。
これで完了。
ときどき
$ cd ~/.anyenv
$ git pull
してやります。(後述のanyenv-gitをインストールすると別のコマンドになります。)
一応バージョン確認しておきましょう。
$ anyenv --version
anyenv 1.1.4
あってもなくてもよいですが、あった方がよいです。
anyenv update
コマンドでanyenvで入れた**env系の全てをアップデートしてくれるプラグインです。デフォルトではこのコマンドは使えません。ちなみにanyenvの方の.gitignoreにはpluginsが書かれていたので、問題なかったです。
$ mkdir -p ~/.anyenv/plugins
$ git clone https://github.com/znz/anyenv-update.git ~/.anyenv/plugins/anyenv-update
これでanyenv update
が使えるようになります。このコマンドも時々実行しておきましょう。
$ git clone https://github.com/znz/anyenv-git.git ~/.anyenv/plugins/anyenv-git
これでanyenvの全部とガベージコレクションなどの最適化を行うことができます。
$ anyenv git pull (更新)
$ anyenv git gc (ガベージコレクションの最適化)
これも時々やっておきましょう。
指定のディレクトリ以下でphpが使えるようにしてみます。phpのどんどんバージョンアップしていっちゃうので、バージョンアップが大変ですね。
$ cd /PATH/
$ anyenv install phpenv
これでOKです。anyenvでインストールするとphp-buildも一緒にインストールしてくれます。
一応シェルをリフレッシュしておきます。
$ exec $SHELL -l
いろいろ確認してみます。
$ php --version
WARNING: PHP is not recommended
PHP is included in macOS for compatibility with legacy software.
Future versions of macOS will not include PHP.
PHP 7.3.24-(to be removed in future macOS) (cli) (built: Jun 17 2021 21:41:15) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.24, Copyright (c) 1998-2018 Zend Technologies
デフォルトだとPHP 7.3が入るみたいですね。後ほど8を入れてみます。
Coming soon.
例によってこちらで一覧を出すと、
$ anyenv install -l
...
nodenv
...
というものがあるので、これをインストールします。
$ anyenv install nodenv
$ exec $SHELL -l
/.anyenv/envs/nodenv
が入ります。
anyenv->nodenvというクラスターなので、今度は利用したnodeのバージョンを特定のディレクトリのみにインストールします。通常のシステムと同様にグローバルを基本にローカルのバージョンがオーバーライドするというような仕組みになってます。anyenvやnodenvを使うということは、開発でバージョンを切り替えるということが多くなるわけなので、当然localの方がよく使うことにはなりますよね。
2021-09-19現在で最新のnodeをインストールします。
$ cd /PROJECT_DIR/
$ nodenv local 16.9.1
同時にnpmもインストールされます。
$ node --version
v16.9.1
$ npm --version
7.21.1
これでOK!