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-selections
có 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-selections
và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-selections
quá 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-selections
nó 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