[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[debian-users:27826] size list of installed packages
- From: Taketoshi Sano <kgh12351@xxxxxxxxxxx>
- Subject: [debian-users:27826] size list of installed packages
- Date: Tue, 10 Apr 2001 23:13:38 +0900
- X-dispatcher: imput version 991025(IM133)
- X-fingerprint: A1A0 F2D0 9C5D 7D61 DBA1 1507 D0B3 F3D0 AE31 C009
- X-ml-info: If you have a question, send e-mail with the body "help" (without quotes) to the address debian-users-ctl@debian.or.jp; help=<mailto:debian-users-ctl@debian.or.jp?body=help>
- X-ml-name: debian-users
- X-mlserver: fml [fml 3.0pl#17]; post only (only members can post)
- Message-id: <20010410213628E.kgh12351@xxxxxxxxxxxxxxxxxxxx>
- X-mail-count: 27826
- X-mailer: Mew version 1.94.2 on Emacs 20.7 / Mule 4.0 (HANANOEN)
佐野@浜松です。
小ネタ 2 つ。
既にありそうな気もしますが、インストールされているパッケージの
サイズをリストするためのスクリプトと、apt のキャッシュに重複した
バージョンがある場合に最新版だけ残して古いものを削除するスクリプトを
作ってみました。(ディスクが不足気味になってきてるので)
まずインストールされているパッケージのサイズをリストするほう。
#!/bin/sh
TMPF=$(tempfile -d /tmp/chk -p pkgsz)
for i in /var/lib/dpkg/info/*.list;
do
N=$(basename $i .list);
grep-dctrl -e -s Package,Installed-Size -F Package "^$N$" \
/var/lib/dpkg/status|awk '{printf "%s ", $2; if (NR%2==0) printf "\n"}' \
>> $TMPF ;
done
sort -n -k 2 $TMPF
rm -f $TMPF
これだけです。使い方は単にファイルに保存して実行属性を付けて呼び出すだけ。
見ればわかるとおり、オプションなどは何もありません。
自分は chk.packagesize という名前を付けて $HOME/bin に置いてあるので
chk.packagesize |lv とか chk.packagesize >pkgsiz.list とかして
使ってます。
(これを使うには grep-dctrl パッケージをインストールする必要があります。)
インストールされているパッケージ数が多いと、完了までに相当の時間を必要と
しますが、最後はサイズの小さい順にソートして表示してくれます。
これを見て、サイズがでかいわりにあまり使っていないものがあったら
削除してすこしでも空き容量をかせごうというセコイことを考えてます ^^;;
もう一方の、apt のキャッシュに重複したバージョンがある場合に最新版だけ
残して古いものを削除するスクリプトですが、これは apt line に stable,
stable-updates, security など複数のラインを記載していると、それぞれの
サーバーに異なるバージョンが存在する間はローカルのキャッシュからも
apt-get autoclean では消えてくれないので、もったいないなぁという気が
して作りました。
もちろん apt-get clean すればきれいさっぱり全部消えてくれますが、
最新版だけは残しておきないなぁと。
#! /bin/sh
for i in *.deb ;
do
if [ ! -f $i ]; then continue; fi
NAM=`echo $i|sed -e 's/_.*$//'`;
AVER=`echo $i| sed -e 's/^'$NAM'_//' -e 's/_.*$//'`;
j=$( ls ${NAM}_*.deb | grep -v $i | head -1 )
if [ -z $j ]; then continue; fi
echo "duplicate: "
echo " $i"
echo " $j"
BVER=`echo $j| sed -e 's/^'$NAM'_//' -e 's/_.*$//'`;
if dpkg --compare-versions $AVER lt $BVER ;
then
echo "will remove" $i
rm -f $i
else
echo "will remove" $j
rm -f $j
fi
done
こんな感じです。こちらは apt のキャッシュディレクトリとして
使っている場所にあらかじめ移動しておいてから実行します。
気分転換のネタでした。
--
# (わたしのおうちは浜松市、「夜のお菓子」で有名さ。)
<kgh12351@xxxxxxxxxxx> : Taketoshi Sano (佐野 武俊)