古いパッケージのローカルリポジトリをクリアする

数ギガバイトのパケットがキャッシュに蓄積される状況は、多くの人に知られていると思います。 標準ソリューション-アンインストールされたパッケージの削除

$ apt-get clean





このコマンドは、ディレクトリ「/ var / cache / apt / archives /」をクリアし、すべてを削除します。

$ apt-get autoclean





ローカルキャッシュパッケージの古いバージョンだけでなく、ダウンロードできないものもすべて削除されます。



ただし、多くの場合、他のすべてに触れることなく、古いパッケージのみを削除する必要があります。



ArchLinuxでこの問題に遭遇したとき、私はすぐにbashに小さなスクリプトを書きました。



 #!/bin/bash ##   CACHE_DIR="/var/cache/apt/archives" ##   apt-get #CACHE_DIR="/var/cache/pacman/pkg" ##   pacman' ##    EXT="deb" #EXT="pkg.tar.gz" ##   ArchLinux' ## ,       FILTER="sed s/_[0-9].*_//" #FILTER="sed s/-[0-9].*//" ##    ArchLinux' function remove { echo -e "$1\t\t\t[removed]"; rm -f $1; } cd "$CACHE_DIR"; ##      echo "Changed working dir on `pwd`"; pkgs=(`ls | grep $EXT`); ##    hashs=(`ls | grep $EXT | $FILTER`); ##      pkgsNum=${#pkgs[@]} ##    echo "$pkgsNum files in cache now"; for (( i=0; i<$pkgsNum-1; i++ )); do #echo "cheking package ${pkgs[$i]}..."; for (( j=$i+1; j<${pkgsNum}; j++ )); ##    hashes    do if [ ${hashs[$i]} = ${hashs[$j]} ]; then ##      if [ ${pkgs[$i]} -ot ${pkgs[$j]} ]; then ##      remove ${pkgs[$i]}; break; else remove ${pkgs[$j]}; fi fi done done
      
      





このスクリプトは重複するパッケージを検索し、作成日が遅いものを除くすべてを削除します-パッケージのバージョンを比較するよりもはるかに簡単です。

画像

pacmanの場合、説明されている問題はrepo-cleanユーティリティを使用して解決されますが、プログラムはC ++ではありますが、ArchLinux専用に作成されました。 したがって、

$ yaourt -S repo-clean





コンソールであなたに! =)



All Articles