Другой способ сделать это - определить, что было установлено, основываясь на ваших "задачах", которые определяют базовые пакеты для установки в соответствии с вашими первоначальными потребностями.
tasksel --list-tasks
По крайней мере, у вас будет server
. Тем не менее, вы можете иметь больше. Для каждой из тех задач, которые вы установили, вы можете получить список установленных пакетов, следующая команда делает все это в одну строку (для ясности) для тех, которые я выбрал в своей установке:
(tasksel --task-packages server ; \
tasksel --task-packages openssh-server ; \
tasksel --task-packages lamp-server) | sort | uniq
Общий подход к вышесказанному будет:
(for a in $( tasksel --list-tasks | grep "^i" | awk '{ print $2 }' ) ; \
do tasksel --task-packages $a; done) | sort | uniq
Теперь использование apt-cache depends --installed -i --recurse <packagename> | grep -v "^ "
чтобы получить список зависимостей, используемых всеми пакетами, определенными в задаче. Это можно сделать в одну строку следующим образом
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
Ниже перечислены все пакеты, которые установлены в вашей системе (не включая зависимости).
dpkg --get-selections | grep "[[:space:]]install" | awk '{print $1}'
Теперь используйте команду comm
чтобы найти те, которые есть только во втором списке (т.е. игнорируйте те, которые находятся в обоих файлах и только в первом файле)
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)