On Sun, Aug 7, 2011 at 5:14 PM, Eric Bélanger <[email protected]> wrote: > pacsysclean sort installed packages by decreasing installed size. It's > useful for finding large unused package when doing system clean-up. This > script is an improved version of other similar scripts posted on the > forums. Thanks goes to Dave as I reused the size_to_human function from his > paccache script. > > Signed-off-by: Eric Bélanger <[email protected]> > > --- > > If you can think of a better name, feel free to suggest one. > --- > contrib/.gitignore | 1 + > contrib/Makefile.am | 5 ++- > contrib/pacsysclean.in | 87 > ++++++++++++++++++++++++++++++++++++++++++++++++ > 3 files changed, 92 insertions(+), 1 deletions(-) > create mode 100755 contrib/pacsysclean.in > > diff --git a/contrib/.gitignore b/contrib/.gitignore > index 1bd145f..19b81e0 100644 > --- a/contrib/.gitignore > +++ b/contrib/.gitignore > @@ -6,5 +6,6 @@ paclist > paclog-pkglist > pacscripts > pacsearch > +pacsysclean > wget-xdelta.sh > zsh_completion > diff --git a/contrib/Makefile.am b/contrib/Makefile.am > index 10b03a2..754096d 100644 > --- a/contrib/Makefile.am > +++ b/contrib/Makefile.am > @@ -5,7 +5,8 @@ OURSCRIPTS = \ > paclist \ > paclog-pkglist \ > pacscripts \ > - pacsearch > + pacsearch \ > + pacsysclean > > OURFILES = \ > bash_completion \ > @@ -21,6 +22,7 @@ EXTRA_DIST = \ > paclist.in \ > pacscripts.in \ > pacsearch.in \ > + pacsysclean.in \ > vimprojects \ > zsh_completion.in \ > README > @@ -59,6 +61,7 @@ paclist: $(srcdir)/paclist.in > paclog-pkglist: $(srcdir)/paclog-pkglist.in > pacscripts: $(srcdir)/pacscripts.in > pacsearch: $(srcdir)/pacsearch.in > +pacsysclean: $(srcdir)/pacsysclean.in > pactree: $(srcdir)/pactree.in > zsh_completion: $(srcdir)/zsh_completion.in > > diff --git a/contrib/pacsysclean.in b/contrib/pacsysclean.in > new file mode 100755 > index 0000000..e393e24 > --- /dev/null > +++ b/contrib/pacsysclean.in > @@ -0,0 +1,87 @@ > +#!/bin/bash > + > +# pacsysclean - Sort installed packages by decreasing installed size. Useful > for system clean-up. > +# > +# Copyright (C) 2011 Eric Bélanger <[email protected]> > +# > +# This program is free software; you can redistribute it and/or > +# modify it under the terms of the GNU General Public License > +# as published by the Free Software Foundation; either version 2 > +# of the License, or (at your option) any later version. > +# > +# This program is distributed in the hope that it will be useful, > +# but WITHOUT ANY WARRANTY; without even the implied warranty of > +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > +# GNU General Public License for more details. > +# > +# You should have received a copy of the GNU General Public License > +# along with this program. If not, see <http://www.gnu.org/licenses/>. > + > +export TEXTDOMAIN='pacman' > +export TEXTDOMAINDIR='/usr/share/locale' > + > +# determine whether we have gettext; make it a no-op if we do not > +if ! type gettext &>/dev/null; then > + gettext() { > + echo "$@" > + } > +fi > + > +usage() { > + echo "$0 - Sort installed packages by decreasing installed size." > + echo > + echo "Usage: $0 [options]" > + echo > + echo "Options:" > + echo " -a List all packages (Default)" > + echo " -e List unrequired explicitely installed > packages" > + echo " -h, --help Show this help message and exit" > +} > + > +size_to_human() { > + awk -v size="$1" ' > + BEGIN { > + suffix[1] = "KiB" > + suffix[2] = "MiB" > + suffix[3] = "GiB" > + suffix[4] = "TiB" > + count = 1 > + > + while (size > 1024) { > + size /= 1024 > + count++ > + } > + > + sizestr = sprintf("%.2f", size) > + sub(/.?0+$/, "", sizestr) > + printf("%s %s", sizestr, suffix[count]) > + }' > +} > + > +PACMAN_OPTS="-Qq" > +if [ -n "$1" ]; then > + case "$1" in > + -a) PACMAN_OPTS="-Qq" ;; > + -e) PACMAN_OPTS="-Qetq" ;; > + -h|--help) usage; exit 0 ;; > + *) usage; exit 1 ;; > + esac > +fi > + > +TEMPDIR=$(mktemp -d /tmp/cleanup-script.XXXX)
I'll change this to: TEMPDIR=$(mktemp -d /tmp/pacsysclean-script.XXXX) I'll wait to see if there are other changes to make before sending a fixed patch. Eric
