Como instalar exatamente os mesmos pacotes em outro computador no openSUSE?

8

Outro computador também pode ser uma máquina virtual. Não consigo fazer clone de disco devido a diferenças e configurações de hardware.

Eu tenho o computador A, instalado e funcionando, também tenho o computador B. Instalarei o mesmo sistema operacional no B, para obter o mesmo sistema básico.

Então, manualmente, adicionarei os mesmos repositórios que no A.

Mas o último estágio está além de mim - como instalar os mesmos pacotes que no A? Observe que a versão precisa corresponder, não apenas o nome do pacote.

Claro que estou procurando uma maneira automática, não a instalação manualmente, uma a uma.

Na verdade, eu deveria ter configurações de hardware completamente diferentes, configurações limpas (sem senhas antigas, etc.), mas seleção de software idêntica.

Questão

Como fazer isso?

fundo

Os pacotes (por versão) estão disponíveis, mas não são os mais recentes. O objetivo disso é fazer uma "cópia" do sistema em execução, atualizar os pacotes no computador B (cópia), testar se funciona, se sim, e atualizar o A. Com cada nova versão do sistema operacional, sou atingido por muitos erros de regressão e Eu tenho que testá-lo mais metodicamente, do que test-live e pânico.

openSUSE 11.4

greenoldman
fonte
os pacotes do computador A são atualizados com as últimas atualizações dos repositórios? (Estou perguntando isso porque pode tornar a resposta mais curta e sua vida mais fácil).
Hanan N.
@ Hanan N., não, isso seria mais fácil, eu sei, é por isso que afirmei as versões exatas.
greenoldman

Respostas:

3

Parece que você precisa criar seu próprio repositório.

Coloque seus RPMs na versão desejada nesse repositório. Em seguida, ative esses repositórios nas duas máquinas (como fonte de instalação) e instale os pacotes.

Nils
fonte
Obrigado, não estou marcando isso como a solução (ainda), porque talvez alguém venha com outra abordagem - como, faça a lista (rpm -qa) e instale esses pacotes na versão fornecida em outra máquina. No entanto, sua abordagem é melhor dimensionada (download único por pacote).
greenoldman
2

Como o OpenSuse usa RPMs, você pode usar o rpmutilitário.

rpm -qalistará todos os pacotes atualmente instalados no seu sistema (uma lista muito longa). A lista inclui nome do pacote, número da versão e arquitetura. Você pode gravar a lista em um arquivo e fornecer ao zypper o arquivo no novo sistema.

Provavelmente, haverá vários pacotes que já estão instalados por padrão, mas o zypper irá ignorá-los e instalar os que você precisa.

n0pe
fonte
Bem, você acabou de copiar meu comentário, então concordamos em termos gerais, mas o diabo está nos detalhes - como você força o zypper a não instalar o pacote P, mas o P-1.23, ou seja, com a versão fornecida? Como isso é crucial aqui (por padrão, a saída do rpm NÃO é compatível com o formato de entrada do zypper).
greenoldman
Para o registro, eu postei isso antes de você postar seu comentário ou você postou enquanto eu escrevia minha resposta. Quanto ao zypper, sim, você pode usar a saída rpm -qacomo entrada zypper. Ele entende perfeitamente o formato do pacote. Não testei para ver se ele obedece ao número da versão, mas depende muito se os repositórios possuem ou não versões anteriores. Se os repositórios não o fizerem, não há muito o que fazer.
N0pe 4/11/11
Você se contradiz: "Eu não testei para ver se ele obedece ao número da versão", mas "Ele entende perfeitamente o formato do pacote". Então, eu esclareço - ele não suporta a saída de rpm. Para especificar a versão, você precisa adicionar um quantificador, e essa é uma parte complicada, porque a nomeação de pacotes é apenas uma convenção, não é forçada por nenhum validador. Veja: en.opensuse.org/SDB:Zypper_usage_11.3#Selecting_packages
greenoldman
1

Primeira lista todos os pacotes instalados e suas versões na máquina que você está tentando criar um "clone" de: rpm -qa > /tmp/rpm.list.txt.

Em seguida, copie /tmp/rpm.list.txtpara o sistema que você está tentando se tornar um "clone" de outro sistema e execute o zypper e alimente a lista de pacotes que você acabou de criar: zypper install $(cat /tmp/rpm.list.txt)(ou onde quer que você coloque o arquivo que contém a lista de pacotes do sistema de origem )

Sami Laine
fonte