X-Git-Url: https://pd.if.org/git/?a=blobdiff_plain;f=zpm-gc;h=95dcbe4cd4e2176c992a7cd6682eeba001554680;hb=c42bb61b39cceab59c17d352f2593f3a5239a27d;hp=f07cdaffd969d6c6bf4188cd672a123bf7e55be2;hpb=c5ae43ca2ab5b4a323e6154d0e08c629cc5a5e1d;p=zpackage diff --git a/zpm-gc b/zpm-gc index f07cdaf..95dcbe4 100755 --- a/zpm-gc +++ b/zpm-gc @@ -3,6 +3,26 @@ # garbage collect a package database # flags to skip phases +# -C clear all phases +# -n dry run +# -a all phases +# default is failed packages, orphaned elf, vacuum +# +# phases +# -cC remove command history by date +# -dD remove dry run +# -eE remove orphaned elf +# -fF remove failed +# -hH fix file content hash +# -hH remove install history by date +# -lL remove old logs, given by date +# -nN remove acked notes +# -oO remove outdated packages, unless preserved +# -pP remove history for removed packages +# -rR remove orphaned rows in files table packagefiles, notes, scripts, ... +# -rR remove removed packages, unless preserved +# -vV compactify the database file + db=${1:-${ZPMDB:-/var/lib/zpm/local.db}} if [ -z "$db" ]; then @@ -38,6 +58,8 @@ done # remove orphaned rows in files table # references in packagefiles, notes, scripts, possibly others +zpm shell $ZPMDB 'delete from files where hash in (select hash from filerefs where refcount = 0);' + # remove old logs, given by date # remove acked notes @@ -49,4 +71,10 @@ done # remove command history by date # compactify the database file +osize=$(zpm stat -f '%s' $ZPMDB) +zpm log -v -i -a 'gc compacting' -t $ZPMDB +zpm shell $ZPMDB vacuum +nsize=$(zpm stat -f '%s' $ZPMDB) +printf 'original size %s\n' $osize +printf 'new size %s\n' $nsize