apt/brewでインストールしたパッケージをmise.tomlで管理したい
開発機のセットアップでは、mise管理下のツール以外にaptやbrewで入れるシステムパッケージも必要になる。mise bootstrap packagesは、[bootstrap.packages]にシステムパッケージを宣言し、apt/brewなど複数のパッケージマネージャを横断してインストール・管理するコマンドである。
mise bootstrap packages useで追加とインストールを1コマンドで行う
manager:packageの書式でパッケージを指定する。mise useと同様に、設定への追記とインストールを同時に行う。
$ mise bootstrap packages use apt:jq -y
mise /work/mise.toml: added apt:jq
mise $ apt-get install -y -- jq
...
mise apt: installed jq
[bootstrap.packages]
"apt:jq" = "latest"
brew:jqのようにbrewのformula名も指定できる。apt/brewのような組み込みマネージャは、rootでない場合に必要に応じてsudoを使う。
mise bootstrap packages applyで設定通りにインストールする
mise.tomlを直接編集して[bootstrap.packages]にエントリを追加した場合は、applyで未インストール分だけをまとめてインストールできる。
[bootstrap.packages]
"apt:jq" = "latest"
"apt:tree" = "latest"
$ mise bootstrap packages apply -y
...
mise apt: installed tree
jqは既にインストール済みのためスキップされ、未インストールのtreeだけがインストールされる。
mise bootstrap packages statusで状態を確認する
現在の状態と設定の同期状況を確認できる。
$ mise bootstrap packages status
apt jq 1.7.1-3ubuntu0.24.04.2 installed
apt tree 2.1.1-2ubuntu3.24.04.2 installed
--missingを付けると、未同期のパッケージがある場合に終了コード1を返す。CIやログイン時のチェックに使える。
$ mise bootstrap packages status --missing
apt jq 1.7.1-3ubuntu0.24.04.2 installed
apt tree missing
$ echo $?
1
--jsonを付けると、マネージャごとの詳細な状態をJSONで取得できる。
$ mise bootstrap packages status --json
{
"apt": {
"available": true,
"packages": [
{
"package": "jq",
"requested_version": "latest",
"desired_state": "present",
"state": "installed",
"installed_version": "1.7.1-3ubuntu0.24.04.2"
}
]
}
}
mise bootstrap packages upgradeで既存パッケージを最新化する
インストール済みのパッケージだけを対象に、パッケージマネージャのメタデータを更新してからアップグレードする。未インストールのパッケージは対象外で、applyを使う必要がある。
$ mise bootstrap packages upgrade --manager apt --dry-run
apt-get update
apt-get install -y --only-upgrade -- jq tree
mise bootstrap packages pruneはマネージャによって対応状況が異なる
pruneは、設定から削除されたパッケージを実際にアンインストールするコマンドだが、対応しているマネージャは限られる。aptでは非対応である。
$ mise bootstrap packages prune --manager apt --dry-run
mise ERROR package manager 'apt' does not support pruning
ヘルプによるとpruneが対応するのはHomebrewのformula・mise管理下のcask・アンインストールに対応したプラグイン経由のパッケージのみで、デフォルトの対象マネージャもbrewである。aptで入れたパッケージを削除する場合は、apt removeのような別の手段が必要になる。
