Closed15

anyenvからasdfに移行する

Futa HirakobaFuta Hirakoba

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の処理が残ってるので一旦コメントアウトしとく

Futa HirakobaFuta Hirakoba

試しに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

とりあえず無事インストールされた

Futa HirakobaFuta Hirakoba

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ファイルで設定できるらしい。

~/.asdfrc
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に書いてあるバージョンをインストールしてくれるようになった

Futa HirakobaFuta Hirakoba

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と違ってインターフェース統一されてて良いですね

Futa HirakobaFuta Hirakoba

ちなみにバージョンが設定できてない場合怒られる。

.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
Futa HirakobaFuta Hirakoba

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
Futa HirakobaFuta Hirakoba

インターフェース統一されてるのもいいし、タブ補完がめちゃくちゃ効くのが良い。プラグイン一覧にも効くし、バージョン番号にも効く。しかも速い。

Futa HirakobaFuta Hirakoba

intellijでnpmが認識されなくなってしまった。

~/.asdf/installs/nodejs/14.15.4/lib/node_modules/npmを指定したら認識された。npmはnode_modulesに配置されるのが原因??

なんにせよプロジェクトごとにnpm指定すんのだるすぎる
この問題はnodenvの頃もあった気がする。確か解決するためのプラグインあったよね。

Futa HirakobaFuta Hirakoba

anyenvの後片付けする。

.zshrcからinitを削除ォ!

~/.zshrc (抜粋)
- # anyenv
- eval "$(anyenv init -)"

ランタイムたちを削除ォ!

❯ rm -rf .anyenv

いままでありがとうanyenv。

Futa HirakobaFuta Hirakoba

yarnをnpm i -g yarnしてもpathに登録されないぞ!

❯ yarn                                                         
zsh: command not found: yarn

yarnもplugin入れないといけない...?となったけどそれは避けたい。ググったら答えが見つかった。

https://github.com/asdf-vm/asdf-nodejs/issues/42#issuecomment-360884173

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が追加されてた

このスクラップは2021/04/04にクローズされました