Como criar uma lista de pacotes instalados para reinstalação fácil / automática após a formatação do disco


8

Vou mudar meu sistema de 32 bits para 64 bits e continuarei o mesmo que tinha antes, o Debian Squeeze, mas não quero perder os programas que instalei antes, porque não me lembro do nome de todos eles.

Então, eu queria um comando para fazer isso por mim, salve o nome de todos os programas que instalei em um arquivo, mas não os programas padrão que acompanham o sistema e, quando estiver usando o outro sistema, mencionarei o nome de o arquivo e seu diretório para que tudo seja instalado automaticamente.

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

Respostas:


7

Você já tentou usar dpkg --get-selections >packages? Se você deseja excluir alguns pacotes, pode 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 são pacotes de i386arquitetura e você multiarchinstalou, você pode instalar os .debs com o habitual dpkg -i package.deb. Mas é provavelmente melhor investigar caso a caso e instalar versões de 64 bits dos pacotes que os possuem.


Obrigado, você realmente me ajudou quando disse que os pacotes já instalados estão na arquitetura i386, eu não tinha pensado nisso, acho melhor reinstalar os outros.
Zignd

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 showmanualnão existe, ou se você deseja executar seleções adicionais, pode usar o aptitude.

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

~icorresponde aos pacotes instalados; !~Momite os pacotes que foram instalados automaticamente como uma dependência de algum outro pacote. -F %paltera o formato de saída para incluir apenas o nome do pacote.

Posteriormente, você pode instalar esses pacotes com

apt-get install $(cat package.list)

O Debian squeeze não possui apt-mark showmanual, mas possui apt-mark showautoquais listas de pacotes instalados automaticamente. Se você usar isso, poderá listar todos os pacotes no sistema antigo 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), é provável que essa abordagem deixe algumas bibliotecas marcadas como manuais, porque elas têm nomes diferentes em arquiteturas diferentes.

Note que se o caso de uso é 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ída no Debian desde o wheezy) que faz tudo automaticamente.


Infelizmente, isso não é perfeito. Quando faço isso, a primeira coisa listada é "acl", que não carreguei explicitamente. Olhando para rdepends, parece que o systemd depende disso, e no Debian 8 que já está instalado. E systemd também está nesta lista. Portanto, mesmo que o systemd e o acl tenham sido instalados, o aptitude não os identifica como "automáticos". Isso poderia ser uma deficiência de aptidão?
Liam

@ Liam Acho que o instalador não marca nenhum pacote como automático. Mesmo que isso acontecesse, o que faria sentido para as bibliotecas, um pacote como aclpoderia ser considerado uma parte importante do sistema base e, portanto, seria marcado como instalado manualmente. Ele foi instalado "manualmente" pelo instalador inicial e não pelo usuário, mas, mesmo assim, o significado de "instalado automaticamente" é "você pode removê-lo com segurança se não quebrar as dependências" e os pacotes fundamentais necessários para tornar o sistema funcionar corretamente não se encaixa na conta.
Gilles 'SO- stop be evil'

1

Não vejo uma maneira simples e padrão de fazê-lo. Receio que você precise mexer dpkgnos logs e opções, porque dpkgnão distingue os "programas padrão que acompanham o sistema" e os outros.

ESTE NÃO SERÁ DIREITO , prefiro deixar claro usando texto em maiúscula em negrito , mas você pode fazer algo assim

  • Extraia a lista de software instalado dos /var/log/dpkg.log*arquivos.

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

  • Salve a lista no dpkg --get-selectionsformato

Et voilà! Quando o sistema estiver funcionando, reinstale os programas com o

 apt-get update
 dpkg --set-selections < yourSelection
 apt-get -u dselect-upgrade
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.