Подтвердить что ты не робот

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

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

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

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

4b9b3361

Ответ 1

См. нижнюю часть

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

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

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

AutoReqProv: no

EDIT:

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

Ответ 2

Чтобы добавить к ответ Марка Лаката выше, есть снимок документа "Максимальный RPM"

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

который также добавляет:

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

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

set(CPACK_RPM_PACKAGE_AUTOREQ " no")

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