Como posso filtrar “dpkg --get-selections” para apenas pacotes disponíveis em repositórios?

9

Eu gostaria de obter uma lista de pacotes instalados em um sistema e instalar todos eles em outro sistema.

Eu sei que dpkg --get-selections pode me fornecer uma lista de todos os pacotes instalados que posso canalizar para dpkg --set-selections no sistema de destino. No entanto, alguns dos pacotes instalados são aqueles que eu criei localmente (usando, por exemplo, checkinstall) e não estão disponíveis nos repositórios. O processo dpkg --set-selections falhará quando não for possível localizar esses pacotes nos repositórios.

Existe uma maneira de filtrar a lista gerada por dpkg --get-selections para que ela contenha apenas pacotes cuja versão atualmente instalada esteja disponível em meus repositórios atuais?

    
por Ryan Thompson 23.04.2012 / 01:32

2 respostas

8

Eu acredito que o Centro de Software tem um recurso para sincronização entre computadores nos dias de hoje. Se esse identificador falhar nos pacotes corretamente, isso poderá resolver o seu problema.

O problema aqui é que dpkg não está ciente dos repositórios, apenas dos pacotes instalados. Você pode descobrir se um pacote está disponível em um repositório executando apt-cache policy $package . Se você vir um repositório no Version Table , ele estará disponível lá.

Então, que tal isso? É lento, mas deve funcionar:

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

Use o seguinte comando

dpkg --get-selections > installed-software

ele criará um arquivo chamado software instalado em seu diretório pessoal

no novo sistema

dpkg --set-selections < installed-software

isto irá ler a seleção e instalar

    
por sarveshlad 23.04.2012 / 03:08