#!/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