Một cách khác để làm điều này là bằng cách xác định những gì đã được cài đặt dựa trên "tác vụ" của bạn để xác định các gói cơ sở để cài đặt theo nhu cầu ban đầu của bạn.
tasksel --list-tasks
Ít nhất bạn sẽ có server
. Tuy nhiên, bạn có thể chọn để có nhiều hơn. Đối với mỗi tác vụ bạn đã cài đặt, bạn có thể nhận danh sách các gói được cài đặt lệnh sau thực hiện tất cả trong một dòng (chia nhỏ cho rõ ràng) cho các gói tôi đã chọn trong cài đặt của mình:
(tasksel --task-packages server ; \
tasksel --task-packages openssh-server ; \
tasksel --task-packages lamp-server) | sort | uniq
Một cách tiếp cận chung cho những điều trên sẽ là:
(for a in $( tasksel --list-tasks | grep "^i" | awk '{ print $2 }' ) ; \
do tasksel --task-packages $a; done) | sort | uniq
Bây giờ sử dụng apt-cache depends --installed -i --recurse <packagename> | grep -v "^ "
để có được một danh sách các phụ thuộc được sử dụng bởi tất cả các gói được xác định trong tác vụ. Điều này có thể được thực hiện trong một dòng như sau
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
Sau đây liệt kê tất cả các gói được cài đặt trong hệ thống của bạn (không bao gồm các phụ thuộc).
dpkg --get-selections | grep "[[:space:]]install" | awk '{print $1}'
Bây giờ sử dụng comm
lệnh để tìm những cái chỉ có trong danh sách thứ hai (tức là bỏ qua những cái có trong cả hai tệp và chỉ tệp đầu tiên)
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)