Tôi muốn có một danh sách các gói được cài đặt trên một hệ thống và cài đặt tất cả chúng trên một hệ thống khác.
Tôi biết rằng dpkg --get-selectionscó thể cung cấp cho tôi một danh sách tất cả các gói đã cài đặt mà tôi có thể đưa dpkg --set-selectionsvào hệ thống đích. Tuy nhiên, một số gói được cài đặt là những gói mà tôi tự xây dựng cục bộ (sử dụng ví dụ như checkinstall) và không có sẵn trong kho. Các dpkg --set-selectionsquá trình sẽ thất bại khi nó không thể tìm thấy những gói trong kho.
Vậy có cách nào để tôi có thể lọc danh sách được tạo bởi dpkg --get-selectionsnó chỉ chứa các gói có phiên bản hiện được cài đặt sẵn trong kho hiện tại của tôi không?
total=$(dpkg --get-selections '*'|wc -l); i=0; dpkg --get-selections '*' | while read line; do i=$(($i+1)); apt-cache policy $(echo "$line" | cut -f1 ) | grep -q 'http://' && echo "$i/$total $line"; echo $line>>/var/tmp/dpkg-selection.list; done