Hi list, this is a script I wrote for myself, but Roman suggested me to send it here, so... here it is: it's a script that removes old packages in the local repo and optionally runs gensync at the end. I tried to follow the standards of makepkg, feel free to ignore it, change it, change its name and things like that. You can even change the copyright line and put Judd's name if you want. ---------------8<----------------8<-----------------8<-------------8< #!/bin/bash # repo-local-cleaner : delete old packages in local repo # # Copyright (c) 2007 Alessio 'mOLOk' Bolognino <themolok@gmail.com> # # 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, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, # USA. myver='3.0.0' source /etc/makepkg.conf # for $CARCH and $USE_COLOR # default settings: PKGEXT="pkg.tar.gz" LOCAL_REPO_DIR="/home/custompkgs" LOCAL_SRCROOT="/var/abs/local" LOCAL_REPO_NAME="custom" RUN_GENSYNC="n" if [ -r /etc/repo-local-cleaner.conf ]; then source /etc/repo-local-cleaner.conf fi msg() { if [ ! "$USE_COLOR" = "n" ]; then echo -e "\033[1;32m==>\033[1;0m \033[1;1m$1\033[1;0m" >&2 else echo "==> $1" >&2 fi } error() { if [ ! "$USE_COLOR" = "n" ]; then echo -e "\033[1;31m==> ERROR:\033[1;0m \033[1;1m$1\033[1;0m" >&2 else echo "==> ERROR: $1" >&2 fi } usage() { echo "repo-local-clener $myver" echo echo "usage: repo-local-cleaner" echo echo "repo-local-clener will delete old packages from the local repository." echo "If setted in the configuration file, it can run gensync." echo "It takes no options." echo } if [ $# -ne 0 -o "$1" = "-h" -o "$1" = "--help" ]; then usage exit 0 fi cd $LOCAL_REPO_DIR count_rm=0 count_all=0 mkdir -p XXX/ for pack in $(ls -v *-${CARCH}.${PKGEXT}) ; do pkgname=${pack%-*-*-${CARCH}.${PKGEXT}} if [ "$p_pkgname" = "$pkgname" ]; then mv ${p_pack} XXX/${p_pack} let count_rm++ fi let count_all++ p_pack=${pack} p_pkgname=${pkgname} done size_removed=$(ls -sh1 XXX/ | awk '{ print $2 }' | head -1) msg "Checking for old packages..." if [ $count_rm = 0 ]; then msg "No package removed" else msg "Removed $count_rm/$count_all old package(s) ( - ${size_removed} )" fi rm -fr XXX/ if [ ! "$RUN_GENSYNC" = "n" ]; then msg "Running gensync..." gensync $LOCAL_SRCROOT $LOCAL_REPO_DIR/$LOCAL_REPO_NAME.db.tar.gz $LOCAL_REPO_DIR/ if [ $? = 0 ]; then msg "done!" else error "gensync failed :(" fi fi # vim: set ts=2 sw=2 noet: ---------------8<----------------8<-----------------8<-------------8< Cheers, -- Alessio 'mOLOk' Bolognino Arch Linux Trusted User http://www.archlinux.org