Como criar uma lista de pacotes instalados para reinstalação fácil / automática depois que o disco é formatado

8

Eu mudarei meu sistema de 32 bits para 64 bits, e será o mesmo que eu tinha antes, Debian Squeeze, mas eu não quero perder os programas que eu instalei antes, porque eu não lembro o nome deles todos.

Então eu queria um comando para fazer isso para mim, salvar o nome de todos os programas que eu instalei em um arquivo, mas não os programas padrão que vieram com o sistema, e quando estou usando o outro sistema eu mencionaria o nome do arquivo e seu diretório para que tudo seja instalado automaticamente.

Mais uma pergunta: é possível fazer isso com programas que foram instalados manualmente com dpkg-i package.deb ? Se sim, como posso fazer isso?

    
por Zignd 21.06.2012 / 14:44

3 respostas

7

Você já tentou usar dpkg --get-selections >packages ? Se você quiser excluir alguns pacotes, poderá editar o arquivo de saída packages . Quando terminar, transfira-o para o sistema de destino e diga:

dpkg --set-selections <packages

E os pacotes serão marcados para instalação. Você provavelmente também precisará dizer aptitude update; aptitude dist-upgrade .

A outra pergunta: se esses pacotes forem i386 architecture packages e você tiver multiarch instalado, poderá instalar o .deb s com o usual dpkg -i package.deb . Mas provavelmente é melhor investigar caso a caso e instalar versões de 64 bits dos pacotes que as possuem.

    
por 21.06.2012 / 15:12
9

Nas versões atuais do Debian, você pode obter uma lista de pacotes explicitamente instalados com

apt-mark showmanual

Para aqueles que executam versões antigas do Debian, onde apt-mark showmanual não existe, ou se você quiser realizar seleções adicionais, você pode usar o aptitude.

aptitude search '~i !~M' -F %p >package.list

~i corresponde aos pacotes instalados; !~M omite os pacotes que foram instalados automaticamente como uma dependência de algum outro pacote. -F %p altera o formato de saída para incluir apenas o nome do pacote.

Mais tarde você pode instalar esses pacotes com

apt-get install $(cat package.list)

O Debian squeeze não tem apt-mark showmanual , mas tem apt-mark showauto que lista os pacotes instalados automaticamente. Se você usar isso, poderá listar todos os pacotes no sistema antigo com dpkg --get-selections >package.list , restaurar todos eles e marcar os pacotes automáticos com apt-mark markauto . Para o seu caso de uso (32 bits a 64 bits), essa abordagem provavelmente deixará algumas bibliotecas marcadas como manuais, porque elas têm nomes diferentes em arquiteturas diferentes.

Observe que, se o caso de uso for para reproduzir uma instalação idêntica, em vez de manter o conjunto de pacotes, mas alterar a arquitetura, agora existe uma ferramenta chamada apt-clone (distribuído no Debian desde wheezy) que faz tudo automaticamente.

    
por 22.06.2012 / 01:43
1

Não vejo uma maneira simples e padrão de fazer isso. Eu tenho medo que você tenha que mexer com os logs e opções do dpkg , porque dpkg não distingue os "programas padrão que vieram com o sistema" e os outros.

ISTO NÃO SERÁ DIREITO , prefiro deixar claro usando texto em maiúsculas em negrito , mas você pode fazer algo parecido com isto

  • Extraia a lista de softwares instalados dos arquivos /var/log/dpkg.log* .

  • Remova os instalados durante a instalação do sistema. (Use o tempo de instalação para detectá-los)

  • Salve a lista no formato dpkg --get-selections

Et voilà! Quando o sistema estiver em funcionamento, reinstale seus programas com

 apt-get update
 dpkg --set-selections < yourSelection
 apt-get -u dselect-upgrade
    
por 21.06.2012 / 15:31