anyenvからasdfに移行する
さまざまなランタイムをバージョン管理できる。面白そうだからanyenvから移行してみる
anyenvをアンインストールする。後で復元できるよう(あんま復元する必要ないようにも思えるけど)に~/.anyenv
は残しとく
brew remove anyenv
ターミナル再起動で消えた。
Last login: Sat Apr 3 23:06:59 on ttys001
/Users/korosuke613/.zshrc:115: command not found: anyenv
けど~/.zshrc
にinitの処理が残ってるので一旦コメントアウトしとく
試しにnode pluginを追加する。バージョン管理するためには先にプラグインを入れる必要がある。
❯ asdf plugin add nodejs
特に出力なし
❯ asdf install nodejs 14.15.4
/Users/korosuke613/.asdf/plugins/nodejs/bin/../lib/utils.sh: line 62: printf: write error: Broken pipe
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 3490 0 3490 0 0 42560 0 --:--:-- --:--:-- --:--:-- 42560
You should install GnuPG to verify the authenticity of the downloaded archives: https://www.gnupg.org/
アーカイブの検証のためにGnuPGがいるっぽい。めんどいけど入れるか
❯ asdf install nodejs 14.15.4
/Users/korosuke613/.asdf/plugins/nodejs/bin/../lib/utils.sh: line 62: printf: write error: Broken pipe
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 3490 0 3490 0 0 38351 0 --:--:-- --:--:-- --:--:-- 38351
gpg: 鍵D7062848A1AB005C: 公開鍵"Beth Griggs <bgriggs@redhat.com>"をインポートしました
gpg: 処理数の合計: 1
gpg: インポート: 1
gpg: 鍵7434390BDBE9B9C5: 公開鍵"Colin Ihrig <cjihrig@gmail.com>"をインポートしました
gpg: 処理数の合計: 1
gpg: インポート: 1
gpg: 鍵D3A89613643B6201: 公開鍵"Danielle Adams <adamzdanielle@gmail.com>"をインポートしました
gpg: 処理数の合計: 1
gpg: インポート: 1
gpg: 鍵C97EC7A07EDE3FC1: 公開鍵"keybase.io/jasnell <jasnell@keybase.io>"をインポートしました
gpg: 処理数の合計: 1
gpg: インポート: 1
gpg: 鍵770F7A9A5AE15600: 公開鍵"Michaël Zasso (Targos) <targos@protonmail.com>"をインポートしました
gpg: 処理数の合計: 1
gpg: インポート: 1
gpg: 鍵E73BC641CC11F4C8: 公開鍵"Myles Borins <myles.borins@gmail.com>"をインポートしました
gpg: 処理数の合計: 1
gpg: インポート: 1
gpg: 鍵C43CEC45C17AB93C: 公開鍵"Richard Lau <rlau@redhat.com>"をインポートしました
gpg: 処理数の合計: 1
gpg: インポート: 1
gpg: 鍵C273792F7D83545D: 公開鍵"Rod Vagg <rod@vagg.org>"をインポートしました
gpg: 処理数の合計: 1
gpg: インポート: 1
gpg: 鍵F07496B3EB3C1762: 公開鍵"Ruben Bridgewater <ruben@bridgewater.de>"をインポートしました
gpg: 処理数の合計: 1
gpg: インポート: 1
gpg: 鍵97B01419BD92F80A: 公開鍵"Ruy Adorno <ruyadorno@hotmail.com>"をインポートしました
gpg: 処理数の合計: 1
gpg: インポート: 1
gpg: 鍵F13993A75599653C: 公開鍵"Shelley Vohr (security is major key) <shelley.vohr@gmail.com>"をインポートしました
gpg: 処理数の合計: 1
gpg: インポート: 1
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 30.1M 100 30.1M 0 0 17.2M 0 0:00:01 0:00:01 --:--:-- 17.2M
node-v14.15.4-darwin-x64.tar.gz: OK
/Users/korosuke613/.asdf/plugins/nodejs/bin/../lib/utils.sh: line 62: printf: write error: Broken pipe
なんかbroken pipeしてるけど大丈夫?
❯ node --version
v14.15.4
とりあえず無事インストールされた
asdf install nodejs <バージョン番号>
でそのバージョンのnodeがインストールできるが、.tool-versions
でバージョンが指定されていれば<バージョン番号>
は省略できる。
ただ、今まで〇〇envを使っていたので.node-version
のようなファイルをリポジトリにおいてバージョンを固定していた。これを読むようにしてほしい。
現時点では.node-version
を置いても読んでくれない。
❯ asdf current
golang 1.16.3 /Users/korosuke613/.tool-versions
nodejs ______ No version set. Run "asdf <global|shell|local> nodejs <version>"
ruby ______ No version set. Run "asdf <global|shell|local> ruby <version>"
~/.asdfrc
というconfigファイルで設定できるらしい。
legacy_version_file = yes
asdf current
で確認。
❯ asdf current
golang 1.16.3 /Users/korosuke613/.tool-versions
nodejs 14.15.4 /Users/korosuke613/Program/linear-webhook/.node-version
ruby ______ No version set. Run "asdf <global|shell|local> ruby <version>"
おお!読んでくれてる。(カレントディレクトリは~/Program/linear-webhook
)
これでasdf install nodejs
で.node-version
に書いてあるバージョンをインストールしてくれるようになった
terraformも入れてみた
❯ asdf plugin add terraform
❯ asdf install terraform
Downloading terraform version 0.14.5 from https://releases.hashicorp.com/terraform/0.14.5/terraform_0.14.5_darwin_amd64.zip
Cleaning terraform previous binaries
Creating terraform bin directory
Extracting terraform archive
❯ terraform --version
Terraform v0.14.5
簡単。
やっぱり〇〇envと違ってインターフェース統一されてて良いですね
ちなみにバージョンが設定できてない場合怒られる。
.terraform-version
が存在しないフォルダでバージョンを確認するが、~/.tool-versions
にもterraformのバージョンが存在しないため怒られてる。
❯ terraform --version
No version set for command terraform
Consider adding one of the following versions in your config file at /Users/korosuke613/.tool-versions
terraform 0.14.5
asdf global terraform 0.14.9
でglobalでのterraformのバージョンを設定
❯ asdf install terraform latest
Downloading terraform version 0.14.9 from https://releases.hashicorp.com/terraform/0.14.9/terraform_0.14.9_darwin_amd64.zip
Cleaning terraform previous binaries
Creating terraform bin directory
Extracting terraform archive
❯ asdf global terraform 0.14.9
❯ terraform --version
Terraform v0.14.9
brew管理でもないためaws-cliも置き換える。
まずアンスコ
❯ rm /usr/local/bin/aws
❯ rm /usr/local/bin/aws_completer
❯ rm -rf /usr/local/aws-cli
asdfでインスコ
❯ asdf plugin add awscli
❯ asdf install awscli latest
❯ asdf global awscli 2.1.34
❯ aws --version
aws-cli/2.1.34 Python/3.8.8 Darwin/20.3.0 exe/x86_64 prompt/off
インターフェース統一されてるのもいいし、タブ補完がめちゃくちゃ効くのが良い。プラグイン一覧にも効くし、バージョン番号にも効く。しかも速い。
intellijでnpmが認識されなくなってしまった。
~/.asdf/installs/nodejs/14.15.4/lib/node_modules/npm
を指定したら認識された。npmはnode_modulesに配置されるのが原因??
なんにせよプロジェクトごとにnpm指定すんのだるすぎる
この問題はnodenvの頃もあった気がする。確か解決するためのプラグインあったよね。
jetbrainsのyoutrackで議論されてるかと思いきやされてない感あるな
うーん。npmとintellijの件は一旦様子見で...
anyenvの後片付けする。
.zshrc
からinitを削除ォ!
- # anyenv
- eval "$(anyenv init -)"
ランタイムたちを削除ォ!
❯ rm -rf .anyenv
いままでありがとうanyenv。
チームのみんなにも今度共有する
yarnをnpm i -g yarn
してもpathに登録されないぞ!
❯ yarn
zsh: command not found: yarn
yarnもplugin入れないといけない...?となったけどそれは避けたい。ググったら答えが見つかった。
asdf reshim nodejs
でpathにyarnが追加された。(yarnが、というよりnpm i -g
したものが追加された)
❯ asdf -h
version: v0.8.0
...
asdf reshim <name> <version> Recreate shims for version of a package
shimsにnpm i -g
したものが追加されるってことでしょう
❯ ls ~/.asdf/shims/
aws jar javadoc jdb jhsdb jmap jrunscript jstatd npx terraform
aws_completer jarsigner javap jdeprscan jimage jmod jshell keytool rmid yarn
go java jcmd jdeps jinfo jpackage jstack node rmiregistry yarnpkg
gofmt javac jconsole jfr jlink jps jstat npm serialver
確かにyarnが追加されてた