Тестовая установка пакетов RPM - PullRequest
0 голосов
/ 21 октября 2009

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

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

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

/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

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

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

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

Ответы [ 2 ]

1 голос
/ 12 ноября 2009

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

%_prefix %{_home}

Работает нормально.

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

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

и поместите это в свой .rpmmacros:

%_dbpath /home/test/var/lib/rpm
%_rpmlock_path %{_dbpath}/__db.000
0 голосов
/ 25 апреля 2012

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

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

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

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

...