Pergunta

Estamos usando rpm para implantar nossas aplicações web internamente. O rpm instala os arquivos, configura o Apache, cron, registro e assim por diante.

Gostaria de construir uma versão de teste do rpm que se instala em um local diferente com uma configuração diferente para apache, cron e registro. Deve ser possível instalar tanto a produção e teste rpm na mesma máquina.

Com as duas rpms instalado i teria algo como

/opt/app/www/...
/opt/app-test/www/...
/etc/httpd/conf.d/app.conf
/etc/httpd/conf.d/app-test.conf
/etc/cron.d/app
/etc/cron.d/app-test
/etc/init.d/app
/etc/init.d/app-test

O que seria uma boa maneira de conseguir isso?

  • Copie a especificação e renomeação de tudo para "teste"?
  • Criar diferentes subpacotes para prod / teste?
  • Usar macros rpm para alterar a localização e os nomes na especificação?
  • Use rpm --relocate?

Existe alguma rpm existente que tentativas de fazer isso que eu posso olhar?

Foi útil?

Solução

Em meus arquivos de especificação, eu uso o built-in macros e, em seguida, com uma conta de teste (não root) e um personalizados ~ / .rpmmacros, eu altere o prefixo padrão:

%_prefix %{_home}

funciona bem.

Você pode até criar um banco de dados de teste rpm:

$ rpmdb --initdb --dbpath /home/test/var/lib/rpm

e colocar isso em suas .rpmmacros:

%_dbpath /home/test/var/lib/rpm
%_rpmlock_path %{_dbpath}/__db.000

Outras dicas

Mesmo que você tenha uma solução diferente, eu decidi sugerir uma outra maneira de conseguir isso. errado nada com a virtualização embora. Provavelmente a melhor solução de qualquer maneira desde a execução de um ambiente de teste na mesma máquina como a produção não é seguro / secure eu acho. Dito isto ...

Eu provavelmente usar um arquivo de especificações como um modelo e, em seguida, o seguinte:

...
# somwwhere in the beginning of spec
%global testrel test

#rest of document
Source0: tarball-with-things%{?testrel}.tar.bz
...
%if ${?testrel:1}${!?testrel:0}
# this will execute only in test rpm
%endif
...

Note que especailly a macro %{?testrel} é a coisa interessante. Ele permite que você atualize as coisas simultaneamente para ambas as versões, mas se você deseja manter algo específico para uma versão ou o outro ainda pode. Ele também não exige quaisquer alterações para o banco de dados, macros personalizadas em ~ / .rpmmacros (que mudam de acordo com o sistema que está sendo construído sobre)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top