Eine andere Möglichkeit, dies zu tun, besteht darin, anhand Ihrer "Tasks" zu ermitteln, welche Basispakete entsprechend Ihren anfänglichen Anforderungen installiert werden müssen.
tasksel --list-tasks
Zumindest hättest du das server
. Sie können sich jedoch für mehr entscheiden. Für jede der von Ihnen installierten Aufgaben können Sie eine Liste der installierten Pakete erhalten. Der folgende Befehl führt alles in einer Zeile (der Übersichtlichkeit halber aufgeschlüsselt) für diejenigen aus, die ich in meiner Installation ausgewählt habe:
(tasksel --task-packages server ; \
tasksel --task-packages openssh-server ; \
tasksel --task-packages lamp-server) | sort | uniq
Ein generischer Ansatz für das oben Genannte wäre:
(for a in $( tasksel --list-tasks | grep "^i" | awk '{ print $2 }' ) ; \
do tasksel --task-packages $a; done) | sort | uniq
Verwenden Sie nun apt-cache depends --installed -i --recurse <packagename> | grep -v "^ "
, um eine Liste der Abhängigkeiten abzurufen, die von allen in der Task definierten Paketen verwendet werden. Dies kann wie folgt in einer Zeile erfolgen
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
Im Folgenden werden alle Pakete aufgelistet, die auf Ihrem System installiert sind (ohne Abhängigkeiten).
dpkg --get-selections | grep "[[:space:]]install" | awk '{print $1}'
Verwenden Sie nun den comm
Befehl, um nur diejenigen zu finden, die sich in der zweiten Liste befinden (dh ignorieren Sie diejenigen, die sich in beiden Dateien und nur in der ersten Datei befinden).
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)