dev/bash/delunpack/margin.sh

53 lines
1.8 KiB
Bash
Executable File

#!/bin/bash
# Вывод всех файлов, от которых не зависят другие файлы (не завистя жёстко).
#deborphan --all-packages --nice-mode --no-show-section
#exit 0
# Список всех установленных пакетов в allpacks
dpkg -l | grep ".i " | cut -d ' ' -f3 | tail -n +8 > allpacks.txt 2>/dev/null
allpacks=`dpkg -l | grep ".i " | cut -d ' ' -f3 | tail -n +8 2>/dev/null`
# Весь список зависимостей. Чтение идёт из allpacks
{
while true; do # для всех пакетов
# Считываем имя пакета
read p
if [ "$p" == "" ]; then break ;fi
# Добавляем в список зависимостей те за-ти, кт. не входят в рекоммендуемые
dep=`dpkg-query -W -f='${Depends}\n' $p`
tmp=", "`dpkg-query -W -f='${Pre-Depends}\n' $a`
if [[ "$tmp" != ", " ]]; then dep=$dep", "$tmp; fi
rec=`dpkg-query -W -f='${Recommends}\n' $p`
while true; do
if [ "$dep" == "" ]; then break; fi
a=${dep##*\ }
dep2=${dep%\ *}
if [ "$dep2" == "$dep" ]; then dep=""; else dep="$dep2"; fi
a=${a%\,};a=${a#\,};a=${a%\|};a=${a#\|}
echo $allpacks| grep -E "\<$a\>" &>/dev/null && echo $rec | grep -v -E "\<$a\>" &>/dev/null
if [ $? == 0 ];then echo $a; fi
done
done
}<allpacks.txt|sort| uniq > alldeps.txt 2>/dev/null
#exit 0
alldeps=`cat alldeps.txt`
# Вывод всех крайних файлов, от которых не зависят другие.
{
while true; do
read a
if [ "$a" == "" ]; then break; fi
echo $alldeps | grep -E "\<$a\>" &>/dev/null
if [ $? == 0 ]; then continue; fi
dpkg-query -W -f='${Priority}' $a| grep -i "important" &>/dev/null
if [ $? == 0 ]; then continue; fi
echo $a
done
} <allpacks.txt
rm -f allpacks.txt
rm -f alldeps.txt