غالبا يقوم الجميع بتفعيل خاصية حفظ حزم RPM فى فيدورا ؛ نجد أنه بعد فترة من تثبيت الحزم والتحديثات يصبح لدينا الكثير من الحزم المكررة بلا داعى والتى تشغل مساحات كبيرة جدا
بناء على طلب الأخ عبدالرحيم الفاخوري
قمت بتعديل اسكريبت قديم ( ينسخ الحزم الجديدة فقط إلى دليل آخر فى النظام ) ليقوم بتصفية الحزم الموجودة فى /var/cache/yum/ وحذف القديم منها ( ترك أحدث حزمة فقط )
بناء على طلب الأخ عبدالرحيم الفاخوري
قمت بتعديل اسكريبت قديم ( ينسخ الحزم الجديدة فقط إلى دليل آخر فى النظام ) ليقوم بتصفية الحزم الموجودة فى /var/cache/yum/ وحذف القديم منها ( ترك أحدث حزمة فقط )
كود PHP:
#!/bin/bash
# Find and remove repeated (RPM) packages, But saving newest!
# Exit code 0 = done successfully
# Exit code 1 = Root permissions needed
# Sun 26 Dec 2010 01:55:22 AM EET
# Ehab El-Gedawy <[email protected]>
#if [ $UID -ne 0 ] ;then
# echo -e "$(basename $0): Error: Permission denied!"
# exit 1
#fi
Red="$(tput setaf 1)"
Green="$(tput setaf 2)"
NC="$(tput sgr0)"
LogFile=/home/$USERNAME/Repeated\ \(RPM\)\ packages.log
PACKSCOUNT=0
FILES_SIZE=0
CheckPacks()
{
Skip=0
for b in $(ls -r1 --sort=version /var/cache/yum/*/*/*/packages/$1 2>/dev/null)
do
if [ $Skip -ne 0 ] ;then
File_Size=$[$(cksum "$b" | cut -d " " -f 2)/1024]
FILES_SIZE=$[$FILES_SIZE+$File_Size]
[ $UID -eq 0 ] && rm -f $b
[ $UID -eq 0 ] && echo -e "Removing file: $b" >> "$LogFile"
[ $UID -ne 0 ] && echo -e "Repeated file: $b" >> "$LogFile"
PACKSCOUNT=$[$PACKSCOUNT+1]
fi
Skip=1
done
}
RemRep()
{
echo -e "Old packages in /var/cache/yum/ will be removed!"
echo -e '---------------------------------------------------------'
echo -e "---------------------------------------------------------
\t\t\t$(date)\nGETREPEATEDANDSOON\nRepeated packages are:" >> "$LogFile"
[ $UID -eq 0 ] && echo -e "${Green}Finding and removing files.${NC}"
[ $UID -ne 0 ] && echo -e "${Red}Finding, You must be root to remove repeated packages!${NC}"
for a in $(rpm --nosignature --qf '%{Name}\n' -qp $(ls -r1 /var/cache/yum/*/*/*/packages/*.rpm 2>/dev/null) 2>/dev/null | sort | uniq -d)
do
CheckPacks $a-[0-9]*.i*.rpm
CheckPacks $a-[0-9]*.x*.rpm
CheckPacks $a-[0-9]*.noarch.rpm
done
echo -e '---------------------------------------------------------'
PACGNUMMSG="$( [ $UID -ne 0 ] && echo "IF " )$PACKSCOUNT repeated packages Removed!, This will save almost $[$FILES_SIZE/1024] MB"
echo -e $PACGNUMMSG
sed -i -e "s;GETREPEATEDANDSOON;$PACGNUMMSG;g" "$LogFile"
echo -e "Read $LogFile for more detailes"
}
RemRep
chown $USERNAME:$USERNAME "$LogFile"
exit 0
تعليق