anyenvでパッケージマネージャーをマネジメント

MacであればHomebrewで直接env系のバージョン管理ツールをインストールすることもできるが、様々な言語を扱うのであればanyenvを使ってまとめて扱った方が合理的であると思う。それに.zshrcがパスで汚染されることもなく清潔だ。

まずはHomebrewからanyenvのインストール。

% brew install anyenv
==> Downloading https://homebrew.bintray.com/bottles/anyenv-1.1.2.big_sur.bottle.tar.gz
######################################################################## 100.0%
==> Pouring anyenv-1.1.2.big_sur.bottle.tar.gz
🍺  /usr/local/Cellar/anyenv/1.1.2: 23 files, 30KB

# インストールするだけでは実行できない
% anyenv install nodenv
anyenv-install: definition not found: nodenv

% echo 'eval "$(anyenv init -)"' >> ~/.zshrc

% anyenv init
# Load anyenv automatically by adding
# the following to ~/.zshrc:

eval "$(anyenv init -)"

% exec $SHELL -l
ANYENV_DEFINITION_ROOT(/Users/ki/.config/anyenv/anyenv-install) doesn't exist. You can initialize it by:
> anyenv install --init

% anyenv install --init
Manifest directory doesn't exist: /Users/ki/.config/anyenv/anyenv-install
Do you want to checkout ? [y/N]: y
Cloning https://github.com/anyenv/anyenv-install.git master to /Users/ki/.config/anyenv/anyenv-install...
Cloning into '/Users/ki/.config/anyenv/anyenv-install'...
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Compressing objects: 100% (5/5), done.
remote: Total 62 (delta 1), reused 1 (delta 0), pack-reused 57
Receiving objects: 100% (62/62), 10.52 KiB | 1.17 MiB/s, done.
Resolving deltas: 100% (8/8), done.

Completed!

何をインストールできるのか確認。

% anyenv install -l
  Renv
  crenv
  denv
  erlenv
  exenv
  goenv
  hsenv
  jenv
  jlenv
  luaenv
  nodenv
  phpenv
  plenv
  pyenv
  rbenv
  sbtenv
  scalaenv
  swiftenv
  tfenv

今回はnodenvとrbenvをインストールしてみる。

まずはnodevnから。

% anyenv install nodenv
/var/folders/84/3m6g5wsx77q79mwsv9l0p7x00000gn/T/nodenv.20210209175904.25497 ~
Cloning https://github.com/nodenv/nodenv.git master to nodenv...
Cloning into 'nodenv'...
remote: Enumerating objects: 18, done.
remote: Counting objects: 100% (18/18), done.
remote: Compressing objects: 100% (17/17), done.
remote: Total 4021 (delta 5), reused 4 (delta 1), pack-reused 4003
Receiving objects: 100% (4021/4021), 732.75 KiB | 634.00 KiB/s, done.
Resolving deltas: 100% (2636/2636), done.
~
~/.anyenv/envs/nodenv/plugins ~
Cloning https://github.com/nodenv/node-build.git master to node-build...
Cloning into 'node-build'...
remote: Enumerating objects: 244, done.
remote: Counting objects: 100% (244/244), done.
remote: Compressing objects: 100% (138/138), done.
remote: Total 20183 (delta 90), reused 184 (delta 85), pack-reused 19939
Receiving objects: 100% (20183/20183), 3.59 MiB | 705.00 KiB/s, done.
Resolving deltas: 100% (12845/12845), 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 | 165.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.

# シェルを再起動
% exec $SHELL -l

# インストールできるバージョンを確認
% nodenv install -l
0.1.14
0.1.15
0.1.16
0.1.17
0.1.18
0.1.19
0.1.20
# 以下省略

# バージョンを指定してインストール
% nodenv install 15.8.0
Downloading node-v15.8.0-darwin-x64.tar.gz...
-> https://nodejs.org/dist/v15.8.0/node-v15.8.0-darwin-x64.tar.gz
Installing node-v15.8.0-darwin-x64...
Installed node-v15.8.0-darwin-x64 to /Users/ki/.anyenv/envs/nodenv/versions/15.8.0

# シムリンクの更新
% nodenv rehash

# グローバルにバージョンを指定
% nodenv global 15.8.0

# ローカルにバージョンを指定
# 対象のプロジェクトディレクトリに移動
% cd IdeaProject/keitenkiki
% nodenv local 15.8.0 

# nodenvのバージョンを確認
% nodenv --version
nodenv 1.4.0+3.631d0b6

# nodenvでインストールしたNode.jsのバージョンを確認
% nodenv versions
  5.0.0
  5.12.0
  6.17.1
  7.10.1
  8.17.0
* 15.8.0 (set by /Users/ki/.anyenv/envs/nodenv/version)

env系の良いところなんだけど、基本的にオプションが流用できるので学習コストが少ない。rbenvもnodenvと同じ要領で行う。

% anyenv install rbenv
/var/folders/84/3m6g5wsx77q79mwsv9l0p7x00000gn/T/rbenv.20210209180129.25684 ~
Cloning https://github.com/rbenv/rbenv.git master to rbenv...
Cloning into 'rbenv'...
remote: Enumerating objects: 10, done.
remote: Counting objects: 100% (10/10), done.
remote: Compressing objects: 100% (10/10), done.
remote: Total 2878 (delta 3), reused 2 (delta 0), pack-reused 2868
Receiving objects: 100% (2878/2878), 562.87 KiB | 561.00 KiB/s, done.
Resolving deltas: 100% (1795/1795), done.
~
~/.anyenv/envs/rbenv/plugins ~
Cloning https://github.com/rbenv/ruby-build.git master to ruby-build...
Cloning into 'ruby-build'...
remote: Enumerating objects: 18, done.
remote: Counting objects: 100% (18/18), done.
remote: Compressing objects: 100% (13/13), done.
remote: Total 11325 (delta 4), reused 11 (delta 3), pack-reused 11307
Receiving objects: 100% (11325/11325), 2.41 MiB | 761.00 KiB/s, done.
Resolving deltas: 100% (7471/7471), done.
~

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

# シェルを再起動
% exec $SHELL -l

# インストールできるバージョンを確認
% rbenv install -l
2.5.8
2.6.6
2.7.2
3.0.0
jruby-9.2.14.0
mruby-2.1.2
rbx-5.0
truffleruby-21.0.0
truffleruby+graalvm-21.0.0

Only latest stable releases for each Ruby implementation are shown.
Use 'rbenv install --list-all / -L' to show all local versions.

# バージョンを指定してインストール
% rbenv install 3.0.0
Downloading openssl-1.1.1i.tar.gz...
-> https://dqw8nmjcqpjn7.cloudfront.net/e8be6a35fe41d10603c3cc635e93289ed00bf34b79671a3a4de64fcee00d5242
Installing openssl-1.1.1i...
Installed openssl-1.1.1i to /Users/ki/.anyenv/envs/rbenv/versions/3.0.0

Downloading ruby-3.0.0.tar.gz...
-> https://cache.ruby-lang.org/pub/ruby/3.0/ruby-3.0.0.tar.gz
Installing ruby-3.0.0...
ruby-build: using readline from homebrew
Installed ruby-3.0.0 to /Users/ki/.anyenv/envs/rbenv/versions/3.0.0

# シムリンクの更新
% rbenv rehash

# グローバルにバージョンを指定
% rbenv global 3.0.0

# ローカルにバージョンを指定
# 対象のプロジェクトディレクトリに移動
% cd IdeaProject/keitenkiki
% rbenv local 15.8.0

# rbenvのバージョンを確認
% rbenv --version
rbenv 1.1.2-44-gd604acb

# rbenvでインストールしたRubyのバージョンを確認
% rbenv versions
  system
  2.5.7
  2.7.1
* 3.0.0 (set by /Users/kh/.anyenv/envs/rbenv/version)

取り敢えず以上のコマンドを操作できれば困ることはないと思う。一応以下のコマンドもあるが、気が向いた時にでも試してみて使えそうなものだけピックアップしたい。

% anyenv commands
--version
commands
completions
envs
global
help
init
install
local
root
uninstall
version
versions

% nodenv commands
--version
commands
completions
exec
global
help
hooks
init
install
local
prefix
rehash
root
shell
shims
uninstall
vars
version
version-file
version-file-read
version-file-write
version-name
version-origin
versions
whence
which

% rbenv commands
--version
commands
completions
exec
global
help
hooks
init
install
local
prefix
rehash
root
shell
shims
uninstall
version
version-file
version-file-read
version-file-write
version-name
version-origin
versions
whence
which

To comment

@Contents
閉じる