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


51

私は最近Arch Linuxをインストールしましたが、かなりの量のストレージを比較的早く使い果たしていることがわかりました。何らかの理由で、私はすでにわずか2週間で17GBを使用しています。私は大量のソフトウェアをインストールしていないので、古いパッケージはすべてどこかに維持されていると信じ込まされます。

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

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

ここで完全に間違っているのですか、新しいバージョンにダウンロード/アップグレードするときにArchが古いパッケージを削除することはありませんか?

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

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


1
paccacheを通常のジョブcronまたはsystemdジョブとしてセットアップすることをお勧めします。
スパラフーク14年

回答:


59

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

キャッシュをクリアするには、次の2つのアプローチを採用できますpacman -Sc

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

または、より微妙なアプローチのために、pacman-contribに同梱されているユーティリティのいずれかを使用できます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}'

jasonwryanはそれを言った:)また、ダブル--cleanスイッチには本当に注意してください:最新バージョンで問題が発生した場合(たとえば、新しいパッケージは古いlibまたはPythonリリースに依存します;ハードウェアおよび最新と同じカーネル)。私はpacmanキャッシュを/はるかに優れた解決策よりも別の場所に設定することに気付きました(パスを/etc/pacman.confに設定するだけです)。
tuk0z

2
お持ちでない場合はpaccachepacman-contribパッケージをインストールして入手できます。
pfrenssen

+1ですが$ pacman -Ql pacman-contrib | awk -F"[/ ]" '/\/usr\/bin\/./ {print $NF}'、結果に空白行を避けることをお勧めしますか?;-)
Cbhihe

Welpは、rm -rf /var/cache/pacman/pkg行うには間違ったことだった
ポスト自己


13

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

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

行う:

paccache -d

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

paccache -r

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

du -h /var/log

または単に:

du -h /var

何が起こっているかについてのより一般的なアイデア。


7

pacman -Sccあなたが求めていることをしますが、推奨されません。ウィキから

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

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


それはクールです-それはそれと同等rm /var/cache/pacman/pkg/*ですか?または-少なくともデフォルトでは、私は推測します。/tmpかなり前にほとんどのマシンでpkgキャッシュを再配置squidし、ルーターで単一の中央キャッシュを処理できるようにしました。それほど簡単ではpacman -Sccありません。
mikeserv 14年

@mikeservルーターの中央のパックマンパッケージキャッシュ?Archデスクトップとラップトップの両方を持っているので、どのように設定しましたか、私はそれの音が好きです。
16

6

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

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

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

paccache -dvuk0

1
オプションを印刷する以外に、これは既存の回答にどのように追加されますか?
-jasonwryan

未使用の大きなパッケージを大量に削除した場合、pacmanのキャッシュからそれらを削除する必要があります。これはのフラグ-uで可能ですpaccache。大きなパッケージの例には、Gnome、KDE、Texliveなどがあります。
-strpeter

1
はい、私は旗に精通しています。私のポイントは、答えにさらにフラグを追加するだけで、既に存在するものを複製するという事実を変更しないことです。
-jasonwryan

-kフラグは、私には新鮮でしたし、ここではその使用が有用であったので、非常によく、ヘルプダイアログで説明していません。
hLk
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.