RPM-установка временных параметров

я упаковал свое приложение в пакет RPM, скажем,myapp.об / мин. При установке этого приложения я хотел бы получить некоторые входы от пользователя (пример для ввода может быть - среда, в которой приложение устанавливается - "dev", "qa", "uat", "prod"). На основе входных данных приложение установит соответствующие файлы. Есть ли способ передать параметры при установке приложения?

С. П.: одним из возможных решений может стать создание Пакет RPM для каждой среды. Однако в нашем сценарии это не жизнеспособный вариант, поскольку у нас есть около 20 сред, и мы не хотим иметь 20 разных пакетов для одного и того же приложения.

3 ответов


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

даже проходящий какой-то параметр считается взаимодействием с конечным пользователем. Я думаю, что вы хотите, чтобы ваши сценарии pre или install автоматически обнаруживали среду каким-то образом, возможно, имея файл, который они могут изучить. Я также отмечу, что с точки зрения пользователя RPM, у него есть пакет с именем *-qa.rpm намного более интуитивно понятен, чем передача некоторого случайного параметра.

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

нетрудно создать систему сборки, которая может выплюнуть 20+ пакетов, которые в основном похожи. Я сделал это с файлом спецификации template-ish и некоторыми сценариями, выполняемыми make, которые создадут различные файлы спецификаций и построят RPMs. Не зная особенностей, похоже, что у вас может быть даже основной пакет, от которого зависят все пакеты среды 20+, а затем специфическая среда пакеты устанавливают все, что специфично для их целевой среды.


вы можете использовать опцию ПМЖ, например,

rpm -i --relocate /env=/uat somepkg.rpm

и пусть ваш скрипт ищет переменные данные из файла, расположенного в каталоге "env"


Я думаю, что это очень правильный вопрос, особенно, как только вы переходите в область разработки приложений. Там конфигурация приложения для разных целевых систем-это ваш хлеб насущный: вам нужно настроить для разработки, интеграционного теста,приемочного теста, производства и т. д. Я уверен, что не думаю, что создание отдельного пакета для каждой среды является решением. В основном это должен быть один и тот же код работает в разных средах. Я знаю, что это требование не поддерживается оборотах. Но то, что вы можете сделать в качестве обходного пути, - это использовать простой файл конфигурации, который знает скрипт %pre искать. Файл конфигурации может быть простым сценарием оболочки, который, например, задает переменные среды, а затем различные сценарии до и после могут использовать их.