53 lines
1.8 KiB
Bash
53 lines
1.8 KiB
Bash
|
#!/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
|
||
|
|