anyenvで管理しているバージョン管理ツールを一括でアップデートする方法
はじめに
anyenv を使うと、 xxxenv
系のツールを管理できます。
ここで、 xxxenv
系のツールとは、例えば pyenv や goenv や nodeenv といったツールを指しています。
導入することで、1 台の作業用 PC 内に複数バージョンのプログラム言語実行・ビルド環境を構築できます。
最近は Docker の登場、普及により xxxenv
系ツールの需要も下がっています。
しかし、Docker による仮想化の進んでいないコードベースもあるため、僕の PC 内では現役で活躍してくれています。
anyenv は、これら xxxenv
系のツールを一元管理するための上位のツールとなっています。
便利ですが anyenv でインストールされた xxxenv
系ツールで、最新バージョンがインストールできないときがあります。
具体的には anyenv
を使ってインストールした goenv
を使っていたときに、Go の最新バージョンをインストールできない時がありました。
この問題に対処します。
検証環境
$ uname -moi
arm64 unknown Darwin
$ bash -version | head -n 1
GNU bash, バージョン 5.2.2(1)-release (aarch64-apple-darwin21.6.0)
$ anyenv --version
anyenv 1.1.5
anyenv について
anyenv について、サラッと触れておきます。
冒頭で説明したとおり、 rbenv
のような「各言語の複数実行環境を構築するためのツール」を「管理するツール」になります。
僕は macOS ユーザですので、導入は Homebrew を使いました。
$ brew install anyenv
インストールが終わったらセットアップを行います。
$ anyenv ini
ここまで終わったら一度ターミナルを終了し、再度立ち上げ直せば anyenv
が浸かるようになります。
goenv のインストール
Go 実行環境を管理するためのツール goenv
は以下のようにインストールできます。
$ anyenv install goenv
かんたんですね。
当初は go 1.19.1 を使いたかったので以下のようにインストールしていました。
$ goenv install 1.19.1
goenv で go 1.19.2 が見つからない
つい先程、 go 1.19.2 が利用したいと思ったため、 goenv install -l
を実行して確認してみました。
goenv install -l
コマンドは goenv
でインストール可能な Go のバージョンを一覧表示するコマンドです。
$ goenv install -l | grep 1.19
1.19.0
1.19beta1
1.19.1
すでに公開されている go 1.19.2 が見つかりませんでした。
どうやら goenv
は何らかの方法で更新してやらなければ最新バージョンの Go をインストール可能なバージョンとして認識しないようです。
anyenv-update を使う
anyenv-update をインストールすることで、この問題に対処できます。
anyenv-update は anyenv
のプラグインとして動作するツールです。
インストールすることで anyenv update
というコマンドが使えるようになります。
インストール方法は Github ページに書かれているとおりです。
$ mkdir -p $(anyenv root)/plugins
$ git clone https://github.com/znz/anyenv-update.git $(anyenv root)/plugins/anyenv-update
インストール後、以下のコマンドを実行します。
$ anyenv update
Skipping 'anyenv'; not git repo
Updating 'anyenv/anyenv-update'...
Updating 'goenv'...
| From https://github.com/syndbg/goenv
| 337ce1f..3934658 master -> origin/master
Skipping 'goenv/go-build'; not git repo
Updating 'nodenv'...
Updating 'nodenv/node-build'...
| From https://github.com/nodenv/node-build
| dc7cab27..ad13637c master -> origin/master
| 9edeb954..205fc35b latest-scraped-definitions -> origin/latest-scraped-definitions
| * [new tag] v4.9.92 -> v4.9.92
Updating 'nodenv/nodenv-vars'...
Updating 'pyenv'...
| From https://github.com/pyenv/pyenv
| 1f526edb..03a5d653 master -> origin/master
| * [new tag] v2.3.5 -> v2.3.5
Skipping 'pyenv/python-build'; not git repo
Updating 'rbenv'...
| From https://github.com/rbenv/rbenv
| - [deleted] (none) -> origin/resolve-rbenv-symlink
| 22ee5d4..41580b6 master -> origin/master
| * [new branch] fallback-to-path -> origin/fallback-to-path
| Auto packing the repository in background for optimum performance.
| See "git help gc" for manual housekeeping.
| Auto packing the repository in background for optimum performance.
| See "git help gc" for manual housekeeping.
Updating 'rbenv/ruby-build'...
| From https://github.com/rbenv/ruby-build
| ecb9d22..55575fd master -> origin/master
| * [new tag] v20221004 -> v20221004
| * [new tag] v20220930 -> v20220930
Updating 'tfenv'...
| From https://github.com/tfutils/tfenv
| c05c364..1ccfddb master -> origin/master
| * [new branch] arch-readme -> origin/arch-readme
Updating 'anyenv manifest directory'...
goenv 以外の情報も出力されていますが、僕の作業用 PC には nodenv、pyenv、rbenv、tfenv などもインストールされており、それらをまとめてアップデートしてくれたためです 。
改めて go 1.19.2 をインストールしてみる
改めて go 1.19.2 をインストールしてみます。
$ goenv install -l
1.19.0
1.19beta1
1.19.1
1.19.2
$ goenv install 1.19.2
Downloading go1.19.2.darwin-arm64.tar.gz...
-> https://golang.org/dl/go1.19.2.darwin-arm64.tar.gz
nv versions
Installing Go Darwin arm 1.19.2...
Installed Go Darwin arm 1.19.2 to /Users/genzouw/.anyenv/envs/goenv/versions/1.19.2
2.68s user 3.82s system 55% cpu 11.787 total
$ goenv versions
system
1.16.1
1.16.2
1.18.0
* 1.19.1 (set by /Users/genzouw/.anyenv/envs/goenv/version)
1.19.2
無事、 1.19.2 がインストールされました。
ひとこと
毎朝実行しているスクリプトに、 anyenv update
を仕込ませて置こうと思います。
ディスカッション
コメント一覧
まだ、コメントがありません