Innym sposobem na to jest określenie, co zostało zainstalowane na podstawie „zadań”, które określają pakiety podstawowe do zainstalowania zgodnie z początkowymi potrzebami.
tasksel --list-tasks
Przynajmniej byś miał server
. Możesz jednak wybrać więcej. Dla każdego z zainstalowanych zadań możesz uzyskać listę zainstalowanych pakietów. Następujące polecenie robi to wszystko w jednym wierszu (w podziale na przejrzystość) dla tych, które wybrałem w mojej instalacji:
(tasksel --task-packages server ; \
tasksel --task-packages openssh-server ; \
tasksel --task-packages lamp-server) | sort | uniq
Ogólne podejście do powyższego byłoby:
(for a in $( tasksel --list-tasks | grep "^i" | awk '{ print $2 }' ) ; \
do tasksel --task-packages $a; done) | sort | uniq
Teraz użyj, apt-cache depends --installed -i --recurse <packagename> | grep -v "^ "
aby uzyskać listę zależności używanych przez wszystkie pakiety zdefiniowane w zadaniu. Można to zrobić w jednym wierszu w następujący sposób
apt-cache depends --installed -i --recurse \
$(for a in $( tasksel --list-tasks | \
grep "^i" | \
awk '{ print $2 }' ) ; \
do tasksel --task-packages $a; done) | grep -v "^ " | sort | uniq
Poniżej wymieniono wszystkie pakiety, które są zainstalowane w systemie (nie uwzględniając zależności).
dpkg --get-selections | grep "[[:space:]]install" | awk '{print $1}'
Teraz użyj comm
polecenia, aby znaleźć te, które są tylko na drugiej liście (tj. Zignoruj te, które są w obu plikach i tylko w pierwszym pliku)
comm -13 <(apt-cache depends --installed -i --recurse \
$(for a in $( tasksel --list-tasks | \
grep "^i" | \
awk '{ print $2 }' ) ; \
do tasksel --task-packages $a; done) | grep -v "^ " | sort ) \
<( dpkg --get-selections | grep "[[:space:]]install" | \
awk '{print $1}' | sort)