Arch Linux で pacman によってインストールされた古いパッケージを削除するにはどうすればいいですか?

Arch Linux で pacman によってインストールされた古いパッケージを削除するにはどうすればいいですか?

最近 Arch Linux をインストールしたのですが、ストレージ容量をかなり早く消費していることに気づきました。どういうわけか、約 2 週間ですでに 17 GB も使ってしまいました。インストールしているソフトウェアはそれほど多くないので、古いパッケージはすべてどこかに保管されていると思われます。

これを裏付けるために、パッケージをインストールし、そのパッケージを削除してから再インストールすると、pacman はソフトウェアを再度ダウンロードすることなく、単に解凍して再インストールするだけであることに気付きました。

基本システムをインストールした後、追加ソフトウェアをインストールする前に、おそらく 2GB 程度使用しました。それ以降は、Matlab、Skype、Wine、その他の小さなプログラムをいくつかインストールしただけです。もちろん、不足しているライブラリなどもインストールしましたが、15GB ほどには達していません。

私は完全に間違っているのでしょうか、それとも Arch は新しいバージョンをダウンロード/アップグレードするときに古いパッケージを削除しないのでしょうか?

もしそうなら、これらの未使用のパッケージを削除するにはどうすればいいでしょうか?

また、インストールしたパッケージを削除するときはpacman -R ...

答え1

いいえ、pacman はキャッシュ ( /var/cache/pacman/pkg) から古いパッケージを削除しないため、時間が経つといっぱいになる可能性があります。

キャッシュをクリアするには、次の 2 つの方法があります。ブルート フォース方式では次のようになりますpacman -Sc

-c, --clean
ディスク領域を解放するために、キャッシュからインストールされなくなったパッケージと現在使用されていない同期データベースを削除します。pacman はパッケージをダウンロードすると、それらをキャッシュディレクトリに保存します。さらに、データベースはダウンロードした同期 DB ごとに保存され、設定ファイル pacman.conf(5) から削除されても削除されません。--clean スイッチを 1 つ使用すると、インストールされなくなったパッケージのみが削除されます。2 つ使用すると、キャッシュからすべてのファイルが削除されます。どちらの場合も、パッケージと使用されていないダウンロード済みデータベースを削除するかどうかの yes または no オプションがあります。

あるいは、より微妙なアプローチとして、pacman-contrib に同梱されているユーティリティの 1 つを使用することもできますpaccache

paccache は柔軟な pacman キャッシュ クリーニング ユーティリティで、pacman パッケージ tarball を含むディレクトリから削除される内容や量の制御に役立つ多数のオプションがあります。

デフォルトでは、paccache -rインストールされたパッケージの最後の 3 つのバージョンを除くすべてのバージョンが削除されますが、-k, --keepスイッチを使用してこの数を変更できます。変更をプレビューするスイッチもあります-d, --dryrun。また、オプションを使用して、パッケージを別のディレクトリに移動することもできます。すべてのスイッチについては、またはを-m, --move <dir>参照してください。paccache -hpaccache --help

pacman-contrib パッケージにはパッケージ管理を支援するユーティリティが多数含まれています。それらすべてを調べて、それらがどのように機能し、Arch の実行をはるかに簡単にできるかを理解する価値があります。完全なリストは次のように表示されます。

pacman -Ql pacman-contrib | awk -F"[/ ]" '/\/usr\/bin/ {print $NF}'

答え2

パッケージ キャッシュは にあります/var/cache/pacman/pkg/

注記: pacmanパッケージは 2018 年に更新され、以下に説明するpacman-contribようなスクリプト/ツールを使用するにはさらにインストールする必要がありますpaccache

する:

paccache -d

を実行し-dryrun、次回そのユーティリティを実行すると何が削除されるかを確認するには、次の手順を実行します。

paccache -r

キャッシュされたパッケージを削除します。17 GB は確かに高額です。ログが暴走していないことを確認してください。次の操作を実行してください。

du -h /var/log

あるいは単に:

du -h /var

何が起こっているのかをより一般的に把握するため。

答え3

私は強く推奨しますpaccacheの代わりに を使用しますpacman -Sc。アンインストールされたパッケージのバージョンを選択的に削除するための非常に効果的なフラグもあります-u。私が推奨する のフラグはpaccache次のとおりです (paccache v5.0.2 の一部として):

  • -d, --dryrun: 候補パッケージのみを検索するドライランを実行します
  • -r, --remove: 候補パッケージを削除
  • -u, --uninstalled: アンインストールされたパッケージのみを対象とする
  • -k, --keep <num>: 各パッケージの「num」をキャッシュに保持します (デフォルト: 3)

例: アンインストールされたパッケージの残りのキャッシュバージョンを確認する

paccache -dvuk0

答え4

pacman -Sccあなたが求めていることはできますが、お勧めできません。ウィキ

キャッシュフォルダを完全に空にすることもできます。パックマン -Sccただし、これを行うのは悪い習慣とみなされます。上記に加えて、必要に応じてキャッシュ フォルダーからパッケージを直接再インストールすることもできなくなり、強制的に再ダウンロードすることになるからです。ディスク領域がどうしても必要な場合を除いて、絶対に使用しないでください。

余談ですが、パッケージをアンインストールするときは、 を使用することを好みます。pacman -Rnscこれは、このパッケージに依存するパッケージだけでなく、このパッケージに依存するパッケージも削除するためです。いつものように、削除されるパッケージを注意深く読んでください。そうしないと、システムが使用できない状態になる可能性が非常に高くなります。

関連情報