Как сделать так, чтобы cpack не добавлял необходимые библиотеки в RPM?

Я пытаюсь преобразовать нашу систему сборки в cmake и столкнулся с интересной проблемой с RPMs, которые он генерирует (через cpack): он автоматически добавляет все зависимости, которые, по его мнению, ваш RPM имеет в свой список необходимых библиотек.

В общем, это здорово, но в моем случае, это губительно. К сожалению, пакеты разработки, которые мы создаем, в конечном итоге устанавливаются с помощью одного нашего домашнего инструмента, который использует rpm для их установки в отдельном База данных RPM из системы one. Это глупо, но я не могу изменить его. Это означает, что все системные библиотеки, на которые будет полагаться любая обычная библиотека (например, libc или libpthread), не находятся в базе данных RPM, которая используется с нашими пакетами разработки. Итак, если RPM для одного из наших пакетов разработки перечисляет системные библиотеки как необходимые, то мы не можем установить его, поскольку rpm будет думать, что они не установлены (поскольку они перечислены в обычной базе данных, а не в той, которая его говорят использовать при установке наших пакетов). Наш текущий материал сборки обрабатывает это просто отлично, потому что он не перечисляет системные библиотеки как зависимости в RPMs, но cpack автоматически заполняет список требуемых библиотек RPM и помещает туда системные библиотеки. Мне нужен способ остановить это.

Я CPACK_RPM_PACKAGE_REQUIRES до "", но это не имеет никакого эффекта. Генерируемый RPM cpack по-прежнему заканчивается системными библиотеками, перечисленными как необходимые. Все Я могу подумать о том, чтобы скопировать генератор RPM cpack и взломать его, чтобы сделать то, что я хочу, и использовать это вместо стандартного, но я бы предпочел этого избежать. Кто-нибудь знает, как я могу заставить cpack прекратить заполнять RPM необходимыми библиотеками?

2 ответов


внизу

http://www.rpm.org/max-rpm/s1-rpm-depend-auto-depend.html

тег autoreqprov-отключить автоматическую обработку зависимостей

могут быть времена, когда автоматическая обработка зависимостей RPM не требуется. В этих случаях для его отключения может использоваться тег autoreqprov. Этот тег принимает значение yes / no или 0/1. Например, чтобы отключить автоматическую обработку зависимостей, может потребоваться следующая строка используется:

AutoReqProv: нет

EDIT:

чтобы установить это в cmake, вам нужно сделать set(CPACK_RPM_PACKAGE_AUTOREQPROV " no"). The дополнительное пространство требуется перед (или позади) нет, чтобы он работал. Кажется, что модуль RPM для cpack имеет ошибку, которая делает его таким, что он не позволит вам установить некоторые его переменные на что-либо короче 3 символов.


добавить Марк Lakata это выше, есть снимок" максимального оборотов в минуту " doc

http://www.rpm.org/max-rpm-snapshot/s1-rpm-depend-auto-depend.html

, что также добавляет:

на autoreq и autoprov теги могут использоваться для отключения автоматической обработки требований или" предоставляет " только, соответственно.

и, по крайней мере, с моей версией CPackRPM, кажется, есть похожие переменные, которые вы можете установить, например

set(CPACK_RPM_PACKAGE_AUTOREQ " no")

чтобы отключить только автоматическую обработку зависимостей "требуется".