Как заставить работать команду "чтение" в файле спецификации RPM?
Я написал файл SPEC для сборки пакета RPM. Мне нужно позволить конечному пользователю определить значение переменной в %pre
раздел. Поэтому я использую команду "read %pre
раздел. Но при установке команда "чтение", похоже, игнорируется системой, потому что система не дождалась, пока я не введу значение. Зачем? и есть ли хороший метод, чтобы сделать вышеупомянутую вещь?
1 ответ
Вместо того, чтобы вставлять read
в вашем пакете RPM имеет условный механизм, который можно использовать через параметры командной строки. Большая часть использования условных выражений в RPM проверяет константы, определенные в системных RPM-макросах, или выполняет простые проверки файловой системы. Сначала вы должны изучить их, так как это позволяет установить ваш пакет без помощи человека, выполняющего установку.
Вот несколько полезных страниц, обсуждающих условия RPM:
- Передача условных параметров в сборку rpm (rpm.org)
- http://www.rpm.org/wiki/PackagerDocs/ConditionalBuilds (rpm.org)
- Условные условия (Максимальные обороты в минуту: доведение менеджера пакетов Red Hat до предела)
- openSUSE: RPM условные сборки
Как видно из предложенного прочтения, это функции времени сборки, а не времени установки. Вы не можете сделать "интерактивную" установку RPM. Чтобы узнать больше об этом, смотрите эти страницы:
Из последнего ясно, что это намеренно со стороны разработчиков. Кроме того, один ответ упоминает --relocate
вариант, подразумевающий, что это решает проблему. Однако на самом деле все по-другому. Подробнее об этом читайте здесь:
- Перемещаемые пакеты
- Глава 15. Создание перемещаемого пакета (максимальное число оборотов в минуту)