mise(旧rtx) にアップデートしてちょっとハマった話
はじめに
- mise とは
Rust製asdf互換のバージョン管理ツールのrtx
がリネームされたものです。
基本的にリネームされただけっぽいです。
初回起動時にrtx
から移行の場合は自動でマイグレーションが実行されるようになっているので、ほとんどの場合は特別なことをしなくてもrtx
からの移行でハマることはないと思います。
rtx からのアップデート方法
筆者は、プライベートでmacOS、業務用としてUbuntu を使用していて、両方rtx
を利用していましたので、それぞれ下記の方法でアップデートしました。
# rtxをHomebrewで入れていたので、下記のコマンドを順番に実行しました。
brew update
brew migrate --force rtx
brew upgrade
# aptでrtxを入れていたので、公式のドキュメント通りに下記を実行
sudo install -dm 755 /etc/apt/keyrings
wget -qO - https://mise.jdx.dev/gpg-key.pub | gpg --dearmor | sudo tee /etc/apt/keyrings/mise-archive-keyring.gpg 1> /dev/null
echo "deb [signed-by=/etc/apt/keyrings/mise-archive-keyring.gpg arch=amd64] https://mise.jdx.dev/deb stable main" | sudo tee /etc/apt/sources.list.d/mise.list
sudo apt update
sudo apt install -y mise
詳細は公式ドキュメントを参照してください。
アップデートができたら忘れずに.zshrc
を書き換えます
- eval "$(~/.local/bin/rtx activate zsh)"
+ eval "$(~/.local/bin/mise activate zsh)"
ここまで来たら、下記を実行してマイグレーションを走らせれば移行できます。
mise ls
ハマったこと
基本的にリネームされただけ
、rtxからの移行は自動でマイグレーションされる
と書いたのですが、下記2点がうまくいきませんでした。
- config.tomlのマイグレーションに失敗した。
- python のインストールに失敗した。
1の原因と対応方法
リネームされただけと思っていたのですが、設定ファイル周りが若干変わっていたようです。
今回の原因としては、rtx
の時は~/.config/rtx/config.toml
の[settings]
というセクション
で各種設定を記載していたのですが、mise
では、~/.config/mise/config.toml
ではなく~/.config/mise/settings.toml
という別ファイルに書くようになったみたいで、[settings]
が許容されていないのでconfig.toml
のマイグレーションに失敗していたという理解になりました。
2の原因と対応方法
まず、これに関しての原因というかうまく行かなかった根本の原因はまだ調べきれてないのですが、
もしかすると環境起因の可能性もあるので、参考程度に捉えていただくと良いと思います。
筆者の環境だと、Ubuntuの方は問題なかったのですが、macOSの方だけこの事象が発生しました。
前提として、rtx
からのマイグレーションではpython
は移行されません。
そして、mise
は設定ファイルでexperimental mode
がTrue
になっている場合、python-buildでコンパイルする代わりに、pythonのコンパイル済みバイナリをダウンロードするようになっているようです。(今後デフォルトの仕様にすることを検討していると書いてありました。)
まずは、`mise i`を実行して、config.tomlに書いてあるpythonをインストールしようとします。
実行結果は下記のようになりました。
mise installing precompiled python from indygreg/python-build-standalone
mise if you experience issues with this python, switch to python-build
mise by running: mise settings set python_compile 0
Error: × no precompiled version found for python@3.11.1
プリコンパイルされたバイナリが見つからないっぽいですね。
設定ファイルに下記を追加して、再度mise i
を実行し、無事インストールができました。
通常のインストールなので少し時間がかかった印象でした。
python_compile = true
設定ファイルでexperimental = true
を指定している場合、experimental = false
にしても解決すると思います。
まとめ
mise(旧rtx)はasdfよりも体験がよく基本的にハマることは少ないと思うので、ぜひ使っていない方は使ってみてください。
Discussion