Вопрос

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

Я хотел бы создать тестовую версию 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

Каким будет хороший способ добиться этого?

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

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

Это было полезно?

Решение

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

%_prefix %{_home}

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

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

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

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

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

Другие советы

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

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

...
# 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 (которые могут меняться в зависимости от системы, на которой он создан).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top