2020-03-09

Chocolatey古いバージョンが残っちゃう問題

Windowsネイティブ(PowerShell)で動くパッケージ管理システムChocolatey がとっても便利で、MSYS2のpacmanでインストールできないものについてはこちらを使わせてもらっているのだが、一つ問題がある。choco upgradeコマンドでパッケージをアップグレードすると、古いバージョンが残ってしまうのだ。よりによってghcopenjdk8といったでかいパッケージの旧バージョンが残ってしまうので放置するとストレージが逼迫する原因となってしまう。

とりあえずの対策は非常に簡単で、choco upgradeではなく、 choco uninstallしてからchoco installすればいい。が、誤って先に choco upgradeをしてしまった場合、一旦choco uninstallした後、旧バージョンをinstallし直し、uninstallしてもう一度最新版をinstallするという煩雑な手順が必要になってしまう。

いつも僕が行っている、理想的(と思われる)手順は

choco upgrade all --noop  # アップグレード可能なパッケージ一覧を見る
# ghcとvimとopenjdk8がアップグレード可能だとすると
choco uninstall ghc vim openjdk8 -y
choco install ghc vim openjdk8 -y

となる。逆に、誤ってupgradeを実行してしまった場合は

choco upgrade all --noop
choco upgrade all -p  # アップグレード可能なパッケージを全部アップグレード
choco uninstall ghc vim openjdk8 -y
choco install ghc --version=<ghcの旧バージョン> -y
choco install openjdk8 --version=<openjdk8の旧バージョン> -y
choco install vim --version=<vimの旧バージョン> -y
choco uninstall ghc vim openjdk8 -y
choco install ghc vim openjdk8 -y

となる。バージョンを指定してインストールしないといけないので、1パッケージずつインストールし直す必要がある。めんどくさい。

ちなみにChocolateyのGitHub issueにて報告されている。が、放置されているようだ。choco upgrade--uninstall-firstみたいなフラグを追加したらいいんじゃないかとちょっと思う。

お問い合わせはこちらまで: @matil019 リプにブログのリンクを含めていただけるとスムーズに会話できます。
記事一覧