言語のバージョン管理の決定版
皆さんは言語のバージョン管理は行っていますか?
有名なのはpyenvやnodenvなどですね。
しかし、各言語ごとにバージョン管理システムを落として管理するのはとてもめんどくさいと思います。
今回はほとんどの開発言語のバージョン管理を可能にしてくれるanyenvについてご紹介しようと思います。
anyenv
anyenvとはXXenv関連のモジュールをまとめて一限管理してくれるモジュールとなっています。
anyenv - All in one for **env This is a simple wrapper for rbenv style environment managers. You don't have to git clone or modify your shell profile for each **env anymore if you install anyenv.anyenv/anyenv: All in one for **env
こちらを使うと、anyenv経由でpyenvやnodenvを取扱う事が可能になるので、とても便利です。
インストール方法や使い方もとても簡単なので、ご紹介しようと思います。
手順
anyenvのインストール
まずはメインとなるanyenvをお馴染みHomebrewを使ってインストールしましょう。
==> Downloading https://homebrew.bintray.com/bottles/anyenv-1.1.1.mojave.bottle.tar.gz
Already downloaded: /Users/blogenist/Library/Caches/Homebrew/downloads/8bf4362e86fa71924c51fe1833bcf52d2f1ec89b67dd2aa570e65faa7ad3bf99--anyenv-1.1.1.mojave.bottle.tar.gz
==> Pouring anyenv-1.1.1.mojave.bottle.tar.gz
🍺 /usr/local/Cellar/anyenv/1.1.1: 23 files, 29.6KB
環境変数の設定
インストールが完了したら環境変数にANYENV_ROOT=~/.anyenvを追加しておきましょう。
確認
anyenv 1.1.1
init
この状態で以下のコマンドを実行すると、エラーが表示されます。
ANYENV_DEFINITION_ROOT(/Users/blogenist/.config/anyenv/anyenv-install) doesn't exist. You can initialize it by:
> anyenv install --init
これは、anyenv用の作業ディレクトリが無いから、anyenv install --initで初期化して!というメッセージなので言われた通りに実行しましょう。
Manifest directory doesn't exist: /Users/blogenist/.config/anyenv/anyenv-install
Do you want to checkout ? [y/N]: y
Cloning https://github.com/anyenv/anyenv-install.git master to /Users/blogenist/.config/anyenv/anyenv-install...
Cloning into '/Users/blogenist/.config/anyenv/anyenv-install'...
remote: Enumerating objects: 48, done.
remote: Counting objects: 100% (48/48), done.
remote: Compressing objects: 100% (42/42), done.
remote: Total 48 (delta 2), reused 45 (delta 1), pack-reused 0
Unpacking objects: 100% (48/48), done.
Completed!
確認
これで必要な準備が出来たのでもう一度コマンドを打ってみましょう。
Renv
crenv
denv
erlenv
exenv
goenv
hsenv
jenv
luaenv
nodenv
phpenv
plenv
pyenv
rbenv
sbtenv
scalaenv
swiftenv
tfenv
正常に通りましたね♪
このリストが管理出来る各言語のようです。
ほとんど網羅していますね・・・!
nodenvのインストール
今回は試しにnodenvを使ってみようと思います。
/var/folders/5k/s10ppj590d534615rmtkm9cm0000gn/T/nodenv.20190619141332.24018 ~
Cloning https://github.com/nodenv/nodenv.git master to nodenv...
Cloning into 'nodenv'...
remote: Enumerating objects: 35, done.
remote: Counting objects: 100% (35/35), done.
remote: Compressing objects: 100% (30/30), done.
remote: Total 3719 (delta 15), reused 21 (delta 5), pack-reused 3684
Receiving objects: 100% (3719/3719), 662.32 KiB | 495.00 KiB/s, done.
Resolving deltas: 100% (2465/2465), done.
~
~/.anyenv/envs/nodenv/plugins ~
Cloning https://github.com/nodenv/node-build.git master to node-build...
Cloning into 'node-build'...
remote: Enumerating objects: 64, done.
remote: Counting objects: 100% (64/64), done.
remote: Compressing objects: 100% (45/45), done.
remote: Total 17211 (delta 21), reused 54 (delta 11), pack-reused 17147
Receiving objects: 100% (17211/17211), 2.99 MiB | 703.00 KiB/s, done.
Resolving deltas: 100% (11090/11090), done.
~
~/.anyenv/envs/nodenv/plugins ~
Cloning https://github.com/nodenv/nodenv-default-packages.git master to nodenv-default-packages...
Cloning into 'nodenv-default-packages'...
remote: Enumerating objects: 13, done.
remote: Counting objects: 100% (13/13), done.
remote: Compressing objects: 100% (11/11), done.
remote: Total 264 (delta 6), reused 4 (delta 2), pack-reused 251
Receiving objects: 100% (264/264), 58.20 KiB | 505.00 KiB/s, done.
Resolving deltas: 100% (119/119), done.
~
~/.anyenv/envs/nodenv/plugins ~
Cloning https://github.com/nodenv/nodenv-vars.git master to nodenv-vars...
Cloning into 'nodenv-vars'...
remote: Enumerating objects: 211, done.
remote: Total 211 (delta 0), reused 0 (delta 0), pack-reused 211
Receiving objects: 100% (211/211), 31.82 KiB | 237.00 KiB/s, done.
Resolving deltas: 100% (76/76), done.
~
Install nodenv succeeded!
Please reload your profile (exec $SHELL -l) or open a new session.
確認
nodenv 1.3.0
対象バージョンのインストール
現在インストール可能なバージョン一覧をみてみましょう。
Available versions:
0.1.14
0.1.15
0.1.16
0.1.17
0.1.18
0.1.19
0.1.20
0.1.21
0.1.22
0.1.23
0.1.24
0.1.25
0.1.26
0.1.27
0.1.28
0.1.29
0.1.30
0.1.31
0.1.32
0.1.33
0.1.90
0.1.91
0.1.92
0.1.93
0.1.94
0.1.95
0.1.96
0.1.97
0.1.98
0.1.99
0.1.100
0.1.101
0.1.102
0.1.103
0.1.104
0.2.0
0.2.1
0.2.2
0.2.3
0.2.4
0.2.5
0.2.6
0.3.0
0.3.1
0.3.2
0.3.3
0.3.4
0.3.5
0.3.6
0.3.7
0.3.8
0.4.0
0.4.1
0.4.2
0.4.3
0.4.4
0.4.5
0.4.6
0.4.7
0.4.8
0.4.9
0.4.10
0.4.11
0.4.12
0.5.0
0.5.1
0.5.2
0.5.3
0.5.4
0.5.5
0.5.6
0.5.7
0.5.8
0.5.9
0.5.10
0.6.0
0.6.1
0.6.2
0.6.3
0.6.4
0.6.5
0.6.6
0.6.7
0.6.8
0.6.9
0.6.10
0.6.11
0.6.12
0.6.13
0.6.14
0.6.15
0.6.16
0.6.17
0.6.18
0.6.19
0.6.20
0.6.21
0.7.0
0.7.1
0.7.2
0.7.3
0.7.4
0.7.5
0.7.6
0.7.7
0.7.8
0.7.9
0.7.10
0.7.11
0.7.12
0.8.0
0.8.1
0.8.2
0.8.3
0.8.4
0.8.5
0.8.6
0.8.7
0.8.8
0.8.9
0.8.10
0.8.11
0.8.12
0.8.13
0.8.14
0.8.15
0.8.16
0.8.17
0.8.18
0.8.19
0.8.20
0.8.21
0.8.22
0.8.23
0.8.24
0.8.25
0.8.26
0.8.27
0.8.28
0.9.0
0.9.1
0.9.2
0.9.3
0.9.4
0.9.5
0.9.6
0.9.7
0.9.8
0.9.9
0.9.10
0.9.11
0.9.12
0.10.0
0.10-dev
0.10-next
0.10.1
0.10.2
0.10.3
0.10.4
0.10.5
0.10.6
0.10.7
0.10.8
0.10.9
0.10.10
0.10.11
0.10.12
0.10.13
0.10.14
0.10.15
0.10.16
0.10.17
0.10.18
0.10.19
0.10.20
0.10.21
0.10.22
0.10.23
0.10.24
0.10.25
0.10.26
0.10.27
0.10.28
0.10.29
0.10.30
0.10.31
0.10.32
0.10.33
0.10.34
0.10.35
0.10.36
0.10.37
0.10.38
0.10.39
0.10.40
0.10.41
0.10.42
0.10.43
0.10.44
0.10.45
0.10.46
0.10.47
0.10.48
0.11.0
0.11.1
0.11.2
0.11.3
0.11.4
0.11.5
0.11.6
0.11.7
0.11.8
0.11.9
0.11.10
0.11.11
0.11.12
0.11.13
0.11.14
0.11.15
0.11.16
0.12.0
0.12-dev
0.12-next
0.12.1
0.12.2
0.12.3
0.12.4
0.12.5
0.12.6
0.12.7
0.12.8
0.12.9
0.12.10
0.12.11
0.12.12
0.12.13
0.12.14
0.12.15
0.12.16
0.12.17
0.12.18
4.0.0
4.x-dev
4.x-next
4.1.0
4.1.1
4.1.2
4.2.0
4.2.1
4.2.2
4.2.3
4.2.4
4.2.5
4.2.6
4.3.0
4.3.1
4.3.2
4.4.0
4.4.1
4.4.2
4.4.3
4.4.4
4.4.5
4.4.6
4.4.7
4.5.0
4.6.0
4.6.1
4.6.2
4.7.0
4.7.1
4.7.2
4.7.3
4.8.0
4.8.1
4.8.2
4.8.3
4.8.4
4.8.5
4.8.6
4.8.7
4.9.0
4.9.1
5.0.0
5.x-next
5.1.0
5.1.1
5.2.0
5.3.0
5.4.0
5.4.1
5.5.0
5.6.0
5.7.0
5.7.1
5.8.0
5.9.0
5.9.1
5.10.0
5.10.1
5.11.0
5.11.1
5.12.0
6.0.0
6.x-dev
6.x-next
6.1.0
6.2.0
6.2.1
6.2.2
6.3.0
6.3.1
6.4.0
6.5.0
6.6.0
6.7.0
6.8.0
6.8.1
6.9.0
6.9.1
6.9.2
6.9.3
6.9.4
6.9.5
6.10.0
6.10.1
6.10.2
6.10.3
6.11.0
6.11.1
6.11.2
6.11.3
6.11.4
6.11.5
6.12.0
6.12.1
6.12.2
6.12.3
6.13.0
6.13.1
6.14.0
6.14.1
6.14.2
6.14.3
6.14.4
6.15.0
6.15.1
6.16.0
6.17.0
6.17.1
7.0.0
7.x-dev
7.x-next
7.1.0
7.2.0
7.2.1
7.3.0
7.4.0
7.5.0
7.6.0
7.7.0
7.7.1
7.7.2
7.7.3
7.7.4
7.8.0
7.9.0
7.10.0
7.10.1
8.0.0
8.x-dev
8.x-next
8.1.0
8.1.1
8.1.2
8.1.3
8.1.4
8.2.0
8.2.1
8.3.0
8.4.0
8.5.0
8.6.0
8.7.0
8.8.0
8.8.1
8.9.0
8.9.1
8.9.2
8.9.3
8.9.4
8.10.0
8.11.0
8.11.1
8.11.2
8.11.3
8.11.4
8.12.0
8.13.0
8.14.0
8.14.1
8.15.0
8.15.1
8.16.0
9.0.0
9.x-dev
9.x-next
9.1.0
9.2.0
9.2.1
9.3.0
9.4.0
9.5.0
9.6.0
9.6.1
9.7.0
9.7.1
9.8.0
9.9.0
9.10.0
9.10.1
9.11.0
9.11.1
9.11.2
10.0.0
10.x-dev
10.x-next
10.1.0
10.2.0
10.2.1
10.3.0
10.4.0
10.4.1
10.5.0
10.6.0
10.7.0
10.8.0
10.9.0
10.10.0
10.11.0
10.12.0
10.13.0
10.14.0
10.14.1
10.14.2
10.15.0
10.15.1
10.15.2
10.15.3
10.16.0
11.0.0
11.x-dev
11.x-next
11.1.0
11.2.0
11.3.0
11.4.0
11.5.0
11.6.0
11.7.0
11.8.0
11.9.0
11.10.0
11.10.1
11.11.0
11.12.0
11.13.0
11.14.0
11.15.0
12.0.0
12.x-dev
12.x-next
12.1.0
12.2.0
12.3.0
12.3.1
12.4.0
chakracore-dev
chakracore-nightly
chakracore-8.1.2
chakracore-8.1.4
chakracore-8.2.1
chakracore-8.3.0
chakracore-8.4.0
chakracore-8.6.0
chakracore-8.9.4
chakracore-8.10.0
chakracore-8.11.1
chakracore-10.0.0
chakracore-10.1.0
chakracore-10.6.0
chakracore-10.13.0
graal+ce-1.0.0-rc1
graal+ce-1.0.0-rc10
graal+ce-1.0.0-rc11
graal+ce-1.0.0-rc12
graal+ce-1.0.0-rc13
graal+ce-1.0.0-rc14
graal+ce-1.0.0-rc15
graal+ce-1.0.0-rc16
graal+ce-1.0.0-rc2
graal+ce-1.0.0-rc3
graal+ce-1.0.0-rc4
graal+ce-1.0.0-rc5
graal+ce-1.0.0-rc6
graal+ce-1.0.0-rc7
graal+ce-1.0.0-rc8
graal+ce-1.0.0-rc9
iojs-0.12.0-dev
iojs-1.0.0
iojs-1.x-dev
iojs-1.0.1
iojs-1.0.2
iojs-1.0.3
iojs-1.0.4
iojs-1.1.0
iojs-1.2.0
iojs-1.3.0
iojs-1.4.1
iojs-1.4.2
iojs-1.4.3
iojs-1.5.0
iojs-1.5.1
iojs-1.6.0
iojs-1.6.1
iojs-1.6.2
iojs-1.6.3
iojs-1.6.4
iojs-1.7.1
iojs-1.8.1
iojs-1.8.2
iojs-1.8.3
iojs-1.8.4
iojs-2.0.0
iojs-2.0.1
iojs-2.0.2
iojs-2.1.0
iojs-2.2.0
iojs-2.2.1
iojs-2.3.0
iojs-2.3.1
iojs-2.3.2
iojs-2.3.3
iojs-2.3.4
iojs-2.4.0
iojs-2.5.0
iojs-3.0.0
iojs-3.1.0
iojs-3.2.0
iojs-3.3.0
iojs-3.3.1
nightly
node-dev
rc
v8-canary
ありすぎぃ!!!!
とりあえず無難に11系の最新版を落としておきましょう。
Downloading node-v11.15.0-darwin-x64.tar.gz...
-> https://nodejs.org/dist/v11.15.0/node-v11.15.0-darwin-x64.tar.gz
WARNING: node-v11.15.0-darwin-x64 is past its end of life and is now unsupported.
It no longer receives bug fixes or security updates.
Installing node-v11.15.0-darwin-x64...
Installed node-v11.15.0-darwin-x64 to /Users/blogenist/.config/anyenv/envs/nodenv/versions/11.15.0
Installed default packages for 11.15.0
確認
11.15.0
バージョンの適用
グローバルの場合
マシン全体として共通のバージョンを設定したい場合はnodenv global {バージョン}コマンドで適用出来ます
確認
v11.15.0
ローカルの場合
そのディレクトリ内でのみ反映したい場合はnodenv local {バージョン}コマンドで適用出来ます
すると以下のようなファイルがカレントディレクトリに作成されます。
10.16.0
確認
v10.16.0
fish: Unknown command nodeが出る場合
fish shellを使っている方は以下をfish.configに追加する必要がありますので、ご注意です。
...
(略)
...
set -x NODENV_ROOT $ANYENV_ROOT/envs/nodenv/
set -x PATH $NODENV_ROOT/bin $PATH
set -x PATH $NODENV_ROOT/shims $PATH
...
(略)
...
終わりに
以上のように様々な言語のバージョン管理をanyenvで行う事が可能になりました。
今やバージョン管理はどの言語もマストで必要な作業なので、是非anyenvで一括管理してみてはいかがでしょうか♪
