ツールのインストール先を別のディスクに置きたい

miseがインストールするツール本体は、既定で~/.local/share/mise配下に保存される。ディスク容量の大きい別ボリュームにインストール先をまとめたい、コンテナのビルドキャッシュ層としてインストール先を分離したいなど、既定のパス以外を使いたい場合がある。環境変数MISE_DATA_DIRを設定すると、ツールのインストール先ディレクトリを変更できる。

MISE_DATA_DIRの基本

MISE_DATA_DIRにパスを指定してから、mise installでツールをインストールする。

$ export MISE_DATA_DIR="/mnt/large-storage/mise"
$ mise install jq@1.7
mise jq@1.7          [1/2] install
mise jq@1.7          [1/2] download jq-macos-arm64
mise jq@1.7          [2/2] checksum jq-macos-arm64
mise jq@1.7          [2/2] extract jq-macos-arm64
mise jq@1.7        ✓ installed

【mise】mise whereでツールのインストールパスを確認する で確認すると、指定したディレクトリ配下にインストールされたことが分かる。

$ mise where jq
/mnt/large-storage/mise/installs/jq/1.7

MISE_DATA_DIR配下には、インストール済みツール本体(installs/)だけでなく、ダウンロードしたアーカイブのキャッシュ(downloads/)やshim(shims/)も作られる。

$ find /mnt/large-storage/mise -maxdepth 1
/mnt/large-storage/mise
/mnt/large-storage/mise/migrations
/mnt/large-storage/mise/installs
/mnt/large-storage/mise/shims
/mnt/large-storage/mise/downloads

設定ファイルやキャッシュの場所は変わらない

MISE_DATA_DIRが動かすのはツールのインストール先だけである。mise doctorで確認すると、設定ファイルを探すconfigディレクトリやダウンロードキャッシュとは別のcacheディレクトリ、trustの状態などを保持するstateディレクトリは、MISE_DATA_DIRを変更しても既定のパスのままである。

$ mise doctor
...(中略)...

dirs:
  cache: ~/Library/Caches/mise
  config: ~/.config/mise
  data: /mnt/large-storage/mise
  shims: /mnt/large-storage/mise/shims
  system_shims: /usr/local/share/mise/shims
  state: ~/.local/state/mise

configstateまで移動したい場合は、【mise】MISE_GLOBAL_CONFIG_FILEでグローバル設定ファイルの場所を変更する のような、それぞれ専用の環境変数を別途設定する必要がある。

マシン間で共有しない

MISE_DATA_DIRをネットワークドライブなどに置き、複数のマシンで共有することは推奨されない。インストールされるツール本体はビルド時のOSやCPUアーキテクチャに依存するため、異なる環境から同じインストール先を参照すると、実行できないバイナリを参照してしまう可能性がある。マシンごとに個別のMISE_DATA_DIRを用意する。