使わなくなったツールのバージョンをディスクから消したい

mise install <tool>@<version>でバージョンを指定してインストールを繰り返していると、使わなくなった古いバージョンがディスクに残り続ける。mise uninstallを使うと、インストール済みのツールを個別に削除できる。

mise uninstallの基本

jqのバージョン1.6と1.7.1の両方がインストールされている状態から、mise uninstall <tool>@<version>で1.6だけを削除する。

$ mise ls jq
jq  1.6
jq  1.7.1  /path/to/project/mise.toml  1.7.1

$ mise uninstall jq@1.6
mise jq@1.6          uninstall
mise jq@1.6          remove /path/to/data/installs/jq/1.6
mise jq@1.6          remove ~/Library/Caches/mise/jq/1.6
mise jq@1.6        ✓ uninstalled

$ mise ls jq
jq  1.7.1  /path/to/project/mise.toml  1.7.1

uninstallしてもmise.tomlの記述は変わらない

mise uninstallはインストール済みの実体を削除するだけで、mise.tomlの記述は変更しない。mise.tomlが参照しているバージョンをそのまま削除するとどうなるか確認する。

$ mise uninstall jq@1.7.1
mise jq@1.7.1        uninstall
mise jq@1.7.1        remove /path/to/data/installs/jq/1.7.1
mise jq@1.7.1        remove ~/Library/Caches/mise/jq/1.7.1
mise jq@1.7.1      ✓ uninstalled

$ cat mise.toml
[tools]
jq = "1.7.1"

mise.tomlの記述はそのままなので、mise currentは変わらず1.7.1を返す。ただしmise lsで確認すると、実体が存在しないことを示す(missing)が表示される。

$ mise current jq
1.7.1

$ mise ls jq
jq  1.7.1 (missing)  /path/to/project/mise.toml  1.7.1

実体を削除した状態でmise installを実行すると、mise.tomlに記述された同じバージョンが再びダウンロードされる。

$ mise install
mise jq@1.7.1        [1/2] install
mise jq@1.7.1        [1/2] download jq-macos-arm64
mise jq@1.7.1        [2/2] checksum jq-macos-arm64
mise jq@1.7.1        [2/2] extract jq-macos-arm64
mise jq@1.7.1      ✓ installed

削除前に対象を確認する

--dry-runを付けると、実際には削除せずに対象を確認できる。

$ mise uninstall --dry-run jq@1.7.1
mise jq@1.7.1        uninstall
mise jq@1.7.1        remove /path/to/data/installs/jq/1.7.1
mise jq@1.7.1        remove ~/Library/Caches/mise/jq/1.7.1
mise jq@1.7.1      ✓ uninstalled (dry-run)

複数バージョンをまとめて削除したい場合は、バージョンを指定せずに--allを付ける。

$ mise uninstall --all jq
mise jq@1.6          uninstall
mise jq@1.6          remove /path/to/data/installs/jq/1.6
mise jq@1.6        ✓ uninstalled
mise jq@1.7.1        uninstall
mise jq@1.7.1        remove /path/to/data/installs/jq/1.7.1
mise jq@1.7.1      ✓ uninstalled