
以前、asdfについて調べたけど、asdfはWindows版がない。
WindowsとmacOSとDebianで共通して使えるバージョンマネージャはないものかと調べたら「mise」を見つけた。
「ミセ」でも「マイズ」でもなく『ミーズ』と読む。
フランス語の料理用語で、日本の料理界では「ミザンプラス」とも呼ばれることもある「mise-en-place(ミーズ・アン・プラス)」が由来で、「準備する」「所定の位置に置く」という意味。
uvと同じように、Pythonはビルド済みのバイナリをインストールしてくれるのがとても好み。
基本的にはmiseも個人が占有するPCでユーザーのホームディレクトリにインストールして使うものだけど、asdfと同じように全ユーザー用にシステムワイドに使えないかなと考えてみた。
asdfの時と同じく、WindowsやmacOSは個人が占有して使うものである、ということで、試すOSはDebian 12。
Bashが前提なので、ZshやFishを使うユーザーがいたら別途対応が必要…
確認のために用意した環境
Debian 12を最小セットアップしたマシン
miseを全ユーザー用にインストール
- 必要なパッケージを追加
$ sudo apt update $ sudo apt install curl acl - 同じ名前のファイルが無いことを確認。
$ ls -l /usr/local/bin/mise ls: '/usr/local/bin/mise' にアクセスできません: そのようなファイルやディレクトリはありません - miseインストール
※$ curl https://mise.run | sudo MISE_INSTALL_PATH=/usr/local/bin/mise sh $ sudo chown root: /usr/local/bin/misemise self-updateで自分自身を更新するには、miseバイナリと同じディレクトリにファイル作成権限が必要だけど、/usr/local/bin/ はrootしか書けないので、mise自身の更新はsudoが必要 - バージョン確認
$ mise version _ __ ____ ___ (_)_______ ___ ____ ____ / /___ _________ / __ `__ \/ / ___/ _ \______/ _ \/ __ \______/ __ \/ / __ `/ ___/ _ \ / / / / / / (__ ) __/_____/ __/ / / /_____/ /_/ / / /_/ / /__/ __/ /_/ /_/ /_/_/____/\___/ \___/_/ /_/ / .___/_/\__,_/\___/\___/ /_/ by @jdx 2025.7.20 linux-x64 (2025-07-22) - mise設定
- mise用の各種インストール先ディレクトリ作成
あるグループに属するユーザーは全員読み書きしたいのでSGIDビットを立てる$ sudo mkdir -m 2775 /opt/mise - ここではグループをadmにするけど、もちろん新規に専用グループを作っても構わない
$ sudo chgrp adm /opt/mise - /opt/mise の下に作成されるファイルやディレクトリは、admグループが読み書きできるようにしたい
umaskでは実現できないのでACLを使う$ sudo setfacl -d -m g:adm:rwx /opt/mise - 全ユーザー用に環境変数をセットする
/etc/profile.d/asdf.sh を新規作成する、中身はこんな感じexport MISE_DATA_DIR=/opt/mise export PATH=$PATH:$MISE_DATA_DIR/shims
- mise用の各種インストール先ディレクトリ作成
- asdfと同じように、
mise install中に実行されるtarやinstallコマンドはACLを無視するようで、グループの書き込み権が落ちてしまうsetfaclで再度書き込み権を付与するなんらかのラッパーが必要、後で考える - SSHを入り直すか、
exec $SHELL -lでシェルを読み直す