2009-10-21 4 views
0

Мы используем rpm для развертывания наших веб-приложений внутри компании. Rpm устанавливает файлы, настраивает apache, cron, протоколирование и так далее.Испытательная установка пакетов RPM

Я хотел бы создать тестовую версию rpm, которая устанавливается в другом месте с другой конфигурацией для apache, cron и ведения журнала. Должна быть предусмотрена возможность установки как производственной, так и тестовой об/мин на одном и том же станке.

С обеих оборотами, установленными я бы что-то вроде

/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 

Что бы быть хорошим способом для достижения этой цели?

  • Скопировать спецификацию и переименовать все в "тест"?
  • Создать различные подпакеты для prod/test?
  • Использовать макросы rpm для изменения местоположения и имен в спецификации?
  • Использовать rpm --relocate?

Есть ли какие-либо существующие rpm, которые пытаются сделать это, на что я могу смотреть?

ответ

1

В моих файлах спецификации, я использую built-in macros, а затем, с помощью тестовой учетной записи (не корень) и настроенное ~/.rpmmacros, меняю префикс по умолчанию:

%_prefix %{_home} 

работает отлично.

Вы можете даже создать базу данных тестов оборотов:

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

и поставить это в ваших .rpmmacros:

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

мы решили использовать виртуализацию вместо этого и проигнорировать проблему. отзыв rpmdb tipus полезен, хотя, спасибо. – serbaut

+0

Есть ли у вас такая работа с Maven? Я ищу кого-то, кто мог бы указать мне лучший учебник по использованию [Maven RPM Plugin] (http://mojo.codehaus.org/rpm-maven-plugin/). – blong

0

Даже если у вас есть другое решение, я решил предложить еще один способ добиться этого. Однако ничего плохого в виртуализации. Наверное, лучшее решение, так как запуск тестовой среды на том же компьютере, что и производство, не безопасно/безопасно, я думаю. Это говорит ...

я бы, вероятно, использовать один файл спецификации в качестве шаблона, а затем это:

... 
# 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 
... 

Обратите внимание, что Especailly %{?testrel} макрос интересная вещь. Это позволяет вам обновлять вещи одновременно для обеих версий, но если вы хотите сохранить что-то конкретное для одной версии или другой, вы все еще можете. Он также не требует каких-либо изменений в базе данных, настраиваемых макросов в ~/.rpmmacros (которые будут меняться в зависимости от системы, на которой он строится)