web-dev-qa-db-ja.com

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

最近Arch Linuxをインストールしましたが、多くのストレージを比較的すぐに食べてしまいました。なんらかの理由で、すでに約2週間で17GBを使用しています。ソフトウェアをあまりインストールしていないので、古いパッケージはすべてどこかに保持されていると思います。

これをサポートするために、パッケージをインストールし、そのパッケージを削除してから再インストールすると、pacmanがソフトウェアをアンパックして再インストールするだけで、再ダウンロードする必要がないことに気付きました。

ベースシステムをインストールした後、追加のソフトウェアをインストールする前に、約2GB程度使用しました。それ以来、Matlab、Skype、Wine、その他いくつかの小さなプログラムのみをインストールしました。もちろん、足りないライブラリなどもインストールしましたが、15GBほどの価値はありません。

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

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

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

54
sherrellbc

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

キャッシュをクリアする方法は2つあります。pacman -Scを使用したブルートフォースの方法です。

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

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

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

デフォルトでは、paccacheはインストールされたパッケージの最後の3つのバージョンを除くすべてを削除しますが、この数は-k, --keepスイッチで変更できます。変更をプレビューするための-d, --dryrunスイッチもあります。すべてのスイッチについては、paccache --helpを参照してください。

Pacman-contribパッケージには、パッケージ管理を支援するユーティリティがいくつかあります。それらすべてを調べて、それらがどのように機能するかを理解し、Archの実行をはるかに簡単にすることができる価値があります。あなたは完全なリストを以下で見ることができます:

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

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

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

行う:

paccache -d

-dryrunを実行して、次に実行するときにそのユーティリティの実行によって削除される内容を確認するには:

paccache -r

キャッシュされたパッケージを削除します。 17gbsは急に聞こえます。暴走したログがないことを確認してください。行う:

du -h /var/log

または単に:

du -h /var

何が起こっているかについてのより一般的な考えについて。

15
mikeserv

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

  • -d--dryrun:予行演習を実行し、候補パッケージのみを検索します
  • -r--remove:候補パッケージを削除
  • -u--uninstalled:ターゲットのアンインストール済みパッケージのみ
  • -k--keep <num>:各パッケージの「num」をキャッシュに保持します(デフォルト:3)

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

paccache -dvuk0
8
strpeter

pacman -Sccは求めていることを実行しますが、お勧めできません。 Wiki から

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

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

7
aprad046