[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