Chciałbym uzyskać listę pakietów zainstalowanych w jednym systemie i zainstalować je wszystkie w innym systemie.
Wiem, że dpkg --get-selections
może mi to dać listę wszystkich zainstalowanych pakietów, które mogę wpakować do dpkg --set-selections
systemu docelowego. Jednak niektóre z zainstalowanych pakietów to te, które sam zbudowałem lokalnie (używając np. Checkinstall) i nie są dostępne z repozytoriów. dpkg --set-selections
Proces nie powiedzie się, gdy nie jest w stanie znaleźć te pakiety w repozytoriach.
Czy jest więc sposób na filtrowanie wygenerowanej listy, dpkg --get-selections
aby zawierała ona tylko pakiety, których aktualnie zainstalowana wersja jest dostępna w moich bieżących repozytoriach?
źródło
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
Użyj następującego polecenia
utworzy plik o nazwie zainstalowane oprogramowanie w twoim katalogu domowym
w nowym systemie
to przeczyta wybór i zainstaluje
źródło