[sisyphus] Умно почистить кэш apt-a

Sergey Shilov =?iso-8859-1?q?hsv_=CE=C1_dstszi=2Egov=2Eua?=
Пт Май 7 14:38:46 MSD 2004


В сообщении от 7 Май 2004 11:41 Игорь написал(a):
> В апреле обсуждалась тема чистки
Вопрос был мой.
> предлагаю скрипт, но извиняюсь за стиль - не спец
Аналогично.
>
> !!!! Файлы предварительно переименовываются к именам пакетов
> (в обсуждении предлагался скрипт по переименованию)
Предлагаемый скрипт делает это сам используя RPM
>
> Только после этого можно использовать этот, а то вычистит все
> что не соответствует правилу формирования имени RPM файла.
Этот просто ничего не сделает
>
> Опробовано на Compact 2.3. + Sisyphus (на 20040505)
Тоже опробовано

> ___________________________________________________
> Кому страшно - может предварительно отсадить куда нибудь
> пакеты _______________________________________________
Очень правильная мысль! Предлагаемый скрипт "натравливался" 
именно на отсаженный контент.

#!/bin/bash
#
#
fformat="%{NAME}-%{VERSION}-%{RELEASE}.%{RHNPLATFORM}.rpm"
#
pkg_dir="MY cache dir"
#
pkg_installed=`rpm -qa --queryformat "%{NAME}\\n"`
cd $pkg_dir
for ipkg in $pkg_installed ; do
    ipkgfullname=`rpm -q $ipkg`
    pkg_cached=`find . -iname $ipkg\*`
    if [ -z "$pkg_cached" ] ; then 
	echo "$ipkg"
	continue
    fi
    echo ""
    echo "$ipkg   ( $ipkgfullname )"
    echo "---------------------"
    echo "$pkg_cached"
    for cpkg in $pkg_cached ; do
	cpkgex=`rpm -qp $cpkg --queryformat 
"%{NAME}-%{VERSION}-%{RELEASE}"`
	nfname=`rpm -qp $cpkg --queryformat $fformat`
	echo "compare  $cpkgex == $ipkgfullname"
	if [ "$cpkgex" == "$ipkgfullname" ] ; then
	    echo "--->  $cpkg aka $nfname " 
            #  Чго собственно с пакетом делать 
	    # cp $cpkg  ./installed/$nfname
	    # mv $cpkg  ./installed/$nfname
	break
        fi
    done
    echo ""
done


Для поиска пакетов скачаных но не установленных пакетов пользовал 
другой скрипт

#!/bin/bash
#
#
fformat="%{NAME}-%{VERSION}-%{RELEASE}.%{RHNPLATFORM}.rpm"
#
pkg_dir="MY cache dir"
#
pkg_dir="/home/hsv/APT/archives"
cd $pkg_dir
pkg_cached=`ls *.rpm`
for pkgfile in $pkg_cached ; do
    pkgname=`rpm -qp $pkgfile --queryformat "%{NAME}"`
    nfname=`rpm -qp $pkgfile --queryformat $fformat`
    if [ -n "`rpm -q $pkgname 2> /dev/null`" ] ; then 
        echo "skip  $pkgfile" 
    else 
	mv $pkgfile  ./downloaded/$nfname
        echo "move  $pkgfile to ./downloaded as $nfname" 
    fi  
done


С уважением
Сергей Шилов



Подробная информация о списке рассылки Sisyphus