Ще один спосіб зробити це - визначити, що було встановлено на основі ваших "завдань", які визначають базові пакети для встановлення відповідно до ваших початкових потреб.
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)