Come posso filtrare "dpkg --get-selections" solo per i pacchetti disponibili nei repository?


9

Vorrei ottenere un elenco di pacchetti installati su un sistema e installarli tutti su un altro sistema.

So che dpkg --get-selectionspuò darmi un elenco di tutti i pacchetti installati che posso convogliare dpkg --set-selectionssul sistema di destinazione. Tuttavia, alcuni dei pacchetti installati sono quelli che ho creato localmente (usando ad esempio checkinstall) e non sono disponibili dai repository. Il dpkg --set-selectionsprocesso fallirà quando non è possibile trovare questi pacchetti nei repository.

Quindi c'è un modo in cui posso filtrare l'elenco generato da in dpkg --get-selectionsmodo che contenga solo pacchetti la cui versione attualmente installata è disponibile nei miei repository attuali?

Risposte:


9

Credo che Software Center abbia una funzionalità per la sincronizzazione tra computer al giorno d'oggi. Se gestisce correttamente i pacchetti mancanti, potrebbe risolvere il tuo problema.

Il problema qui è che dpkgnon è a conoscenza dei repository, solo dei pacchetti installati. Puoi scoprire se un pacchetto è disponibile in un repository eseguendo apt-cache policy $package. Se vedi un repository in Version Table, è disponibile lì.

Quindi, che ne dici di questo? È lento, ma dovrebbe funzionare:

dpkg --get-selections '*' \
  | while read line; do
    apt-cache policy $(echo "$line" | cut -f1 ) \
      | grep -q 'http://' \
      && echo "$line"
done

Questo mostrerà i progressi e scriverà in un file: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
rubo77

-4

Utilizzare il seguente comando

dpkg --get-selections > installed-software

creerà un file chiamato software installato nella tua home directory

sul nuovo sistema

dpkg --set-selections < installed-software

questo leggerà la selezione e l'installazione


3
Non credo che tu abbia letto la domanda.
Ryan C. Thompson,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.