RedHat: é possível instalar pacotes em um ambiente simulado para criar RPMs

10

Existe uma ferramenta que permita instalar as dependências de um .spec de RPM em um ambiente isolado? Não instalarei essas dependências globalmente no sistema e não posso fazê-lo, pois não tenho privilégios de root.

O motivo

Desejo criar um pacote A que depende de uma versão mais recente do B (que não pode ser instalada globalmente no sistema).

Eu gosto de construir a versão mais recente do B e deixar a ferramenta de construção instalar B é -devel-o em um ambiente isolado para fornecer todos os arquivos necessários para a construção de um .

Soluções

  • Existem ferramentas para fazer isso?
  • Caso contrário, com o que devo cuidar ao tentar fazer isso com o dizer chroot?
  • Isso seria uma má prática?
finalmente tente
fonte

Respostas:

8

Sim, a ferramenta é chamada mocke está no EPEL.

Uso típico:

rpmbuild -bs mypackage.spec
mock -r epel-6-x86_64 mypackage-0.1-1.src.rpm

Essa é realmente a maneira preferida de criar RPMs, precisamente porque isola o processo do sistema para que dependências inesperadas não sejam absorvidas.

Você pode modificar os arquivos /etc/mockpara que eles recebam seus próprios pacotes, repositório particular etc., ou consulte os documentos para obter informações sobre como adicionar pacotes ao mockambiente chroot manualmente.

Observe que os usuários devem ser adicionados ao mockgrupo para poderem usar mock.

Não por coincidência, o kojiservidor de compilação usado pela Red Hat chama mockpara criar cada pacote individual. Se você precisar compilar muitos pacotes o tempo todo, pode valer a pena configurar um kojiservidor de compilação.

Michael Hampton
fonte
Obrigado Michael. Parece muito bom e fico feliz que minha pergunta não tenha sido tão tola quanto eu pensava. ;)
try-catch-finalmente
3

Acho que tentar compilar pacotes nos hosts de produção é uma prática ruim e tentar fazê-lo sem privilégios de root é mais complicado do que criar suas próprias máquinas de compilação. O que eu normalmente faço é o seguinte.

  1. Instale o VirtualBox ou ferramenta similar no seu desktop / laptop
  2. Crie 32/64 VMs do sistema operacional usado na produção
  3. Instale as ferramentas geralmente simuladas, rpmbuild, etc.
  4. Crie os RPMs para o pacote e quaisquer deps adicionais para ambos os arcos nas suas VMs
  5. Após o teste, envie os RPMs para seu repositório interno para distribuição nos servidores
  6. Teste novamente para garantir que as dependências adequadas estejam sendo recebidas
  7. Libere através do seu gerenciamento de configuração.
Ramin
fonte
Isso vai funcionar. Como é melhor do que usar mock? Eu pensaria que o mock seria mais fácil, mas suspeito que de qualquer maneira praticamente a mesma coisa está acontecendo.
Emory
Não tenho nenhum problema com o mock e acredito que quase todos os documentos de "como criar um rpm" o instalam. No entanto, sem acesso root, não tenho certeza de como o OP adicionará sua conta ao grupo de simulação, instalará a simulação e assim por diante. Ter VMs de construção limpa também ajuda a evitar que dependências estranhas sejam adicionadas acidentalmente aos pacotes.
Ramin
Ponto excelente. Eu não considerei isso. Com isso em mente, acho que essa é a resposta correta.
Emory
@emory com base nos seus comentários Esclareci por que acho que as VMs de compilação são a melhor solução geral, o que acho que dá uma resposta melhor. Obrigado por me cutucar. :-)
Ramin
@Ramin na minha situação (no trabalho) Eu sou apenas usuário . O sistema é um sistema de compilação dedicado e, bem, se todos os desenvolvedores nesse host tivessem privilégios de root, essa caixa não inicializaria após 1 semana. ;) Portanto, usar uma ferramenta como Mock é exatamente a coisa certa a se usar! Configurar VMs também é uma boa idéia, se puder ser bem automatizado. Eu acho que o Vagrant (ainda não testei) é a ferramenta certa para isso.
try-catch-finally