80 lines
2.8 KiB
Bash
80 lines
2.8 KiB
Bash
|
#!/bin/bash
|
||
|
# Очистка системы от ненужных пакетов.
|
||
|
# Список нужных пакетов должен быть представлен в файле exclude_hand.lst
|
||
|
# !!! Файл exclude_base.lst можно получить во время базовой установки, используя mkbaselist.sh !!!
|
||
|
|
||
|
exclbase=exclude_base.lst
|
||
|
exclhand=exclude_hand.lst
|
||
|
|
||
|
if [ `whoami` != "root" ]; then
|
||
|
echo "Внимание! Для запуска программы требуются права root."
|
||
|
echo "Используйте \$su -c './`basename $0`'"
|
||
|
echo "Или \$sudo `basename $0`"
|
||
|
echo "После чего введите пароль администратора"
|
||
|
exit 1
|
||
|
fi
|
||
|
|
||
|
debout=margin_out.lst
|
||
|
debout2=margin_out2.lst
|
||
|
tmpfile=tmp-delunpack.sh-`date +%s`
|
||
|
|
||
|
touch $debout2
|
||
|
|
||
|
while true ; do
|
||
|
|
||
|
# Получаем список всех ненужных файлов в $debout
|
||
|
|
||
|
./margin.sh >$tmpfile
|
||
|
{
|
||
|
while true ; do
|
||
|
read a
|
||
|
#a=${a#[^ ]*\ }
|
||
|
if [ "$a" == "" ]; then break ; fi
|
||
|
grep -E "\<$a\>" $exclbase &>/dev/null || grep -E "\<$a\>" $exclhand &>/dev/null
|
||
|
if [[ $? == 0 ]]; then continue; fi
|
||
|
echo $a
|
||
|
done
|
||
|
} <$tmpfile >$debout
|
||
|
rm -f $tmpfile
|
||
|
|
||
|
# Проверяем - остались ли ненужные пакеты
|
||
|
# read a <$debout
|
||
|
# if [ "$a" == "" ]; then break ; fi # выходим, если больше удалять нечего
|
||
|
cmp $debout $debout2 &>/dev/null
|
||
|
if [[ $? == 0 ]]; then break; fi # выходим, если больше удалять нечего
|
||
|
cp $debout $debout2
|
||
|
|
||
|
# Удаляем все пакеты, представленные в $debout
|
||
|
keep=`cat exclude_base.lst; cat exclude_hand.lst`
|
||
|
{
|
||
|
while true ; do
|
||
|
read a
|
||
|
if [ "$a" == "" ]; then break; fi
|
||
|
# Проверяем - не найден ли пакет, удаляемый по зависимостям
|
||
|
# в списках пакетах, нужных пользователю
|
||
|
contin=false
|
||
|
for a in `apt-get -s -y remove --purge $a|grep Remv|cut -d ' ' -f2`; do
|
||
|
if [[ `echo $keep|grep -E "\<$a\>"` ]]; then contin=true; fi
|
||
|
done
|
||
|
if [[ $contin == true ]]; then echo "Пакет, удаляемый по зависимостям...contcontcont" ; continue; fi
|
||
|
|
||
|
echo ">>> Удаляем пакет $a <<<"
|
||
|
apt-get -y remove --purge $a
|
||
|
if [ $? != 0 ]; then
|
||
|
echo "Невозможно удалить пакет."
|
||
|
exit 1
|
||
|
fi
|
||
|
done
|
||
|
} <$debout
|
||
|
|
||
|
done
|
||
|
|
||
|
rm -f $debout
|
||
|
rm -f $debout2
|
||
|
|
||
|
echo "Удаление пакетов завершено."
|
||
|
echo "Список оставшихся пакетов можно посмотреть, выполнив команду \$./margin.sh"
|
||
|
|
||
|
exit 0
|
||
|
|