Другой способ сделать это - определить, что было установлено, основываясь на ваших «задачах», которые определяют базовые пакеты для установки в соответствии с вашими первоначальными потребностями.
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)