Как запросить файл, не принадлежащий RPM, в строке спецификации "Требуется"?

Я установил (в CentOS 7) программу под названием Rational Software Architect (RSA 9.5), которая представляет собой платформу с расширенными возможностями и работает так же, как Eclipse, но без фактической установки RPM. RSA поставлялся с установочным скриптом bash, который просто сбрасывал файлы затмения в файловую систему. Мой Eclipse исполняется на /opt/IBM/SDP/eclipse с обычными папками Eclipse, такими как "плагины", "функции" и "дропины" на одном уровне.

Я написал спецификационный файл для предыдущей версии "настоящего" Eclipse, который просто установил некоторые java-плагины, которые я написал как jar-файлы, поместив их в папку "dropins" и вызвав eclipse -clean -initialize потом синхронизировать Eclipse с моими новыми плагинами. Это все еще работает с RSA.

Мой вопрос сводится к тому, что раньше у меня просто была строка в файле спецификации, похожая на

Requires: eclipse >= 4.4.2

потому что Eclipse был установлен как RPM. Теперь, когда RSA установлен вместо Eclipse, и с ним не связаны никакие RPM, мне нужно найти способ указать файлу спецификации, что требуется, чтобы папка dropins существовала до установки RPM. Возможно, что-то вроде этого:

Requires: /opt/IBM/SDP/eclipse

У меня не было никакого успеха с вышеупомянутым подходом и задаюсь вопросом, возможно ли вообще установить требование RPM, основанное на файле, а не пакете? Я не могу найти никакой документации по этому вопросу и надеялся, что вы все могли бы помочь! Заранее спасибо.

К вашему сведению... Я работаю в CentOS 7.2 с rpm-build-4.11.3 и rpmdevtools-8.3.


РЕДАКТИРОВАТЬ: Добавление сообщения об ошибке, возвращенное из Yum при использовании абсолютного пути в спецификации

[root@localhost trunk]# yum localinstall myplugin-1.1.6-rev1255.x86_64.rpm Loaded plugins: fastestmirror, langpacks, rhnplugin This system is receiving updates from RHN Classic or Red Hat Satellite. Examining myplugin-1.1.6-rev1255.x86_64.rpm: myplugin-1.1.6-rev1255.x86_64 Marking myplugin-1.1.6-rev1255.x86_64.rpm to be installed Resolving Dependencies --> Running transaction check ---> Package myplugin.x86_64 0:1.1.6-rev1255 will be installed --> Processing Dependency: /opt/IBM/SDP/eclipse for package: myplugin-1.1.6-rev1255.x86_64 Loading mirror speeds from cached hostfile --> Processing Dependency: /opt/IBM/SDP/eclipse for package: myplugin-1.1.6-rev1255.x86_64 --> Finished Dependency Resolution Error: Package: myplugin-1.1.6-rev1255.x86_64 (/myplugin-1.1.6-rev1255.x86_64) Requires: /opt/IBM/SDP/eclipse You could try using --skip-broken to work around the problem You could try running: rpm -Va --nofiles --nodigest

[root@localhost trunk]# ll /opt/IBM/SDP/eclipse -rwxr-xr-x. 1 root root 74675 Jan 28 2015 /opt/IBM/SDP/eclipse

1 ответ

Решение

Согласно Руководству по упаковке Fedora:

... зависимости файлов rpm не работают в соответствии с тем, что находится в файловой системе, они работают в соответствии с путем, указанным в разделе rpm% files.

Итак, вы не можете использовать Requires: требовать файл, который не принадлежит RPM.

Возможной альтернативой является проверка наличия файла в %pre раздел и выход с ненулевым статусом, если его нет. См . Ответ Пола Рубеля на Сбой установки RPM программно в шаге спецификации или ответ to Как прервать установку пакета rpm, если в specfile не выполняются некоторые условия? примеры того, как использовать технику.

Обратите внимание, что ненулевой статус выхода из %pre раздел приведет к сбою установки RPM, но транзакция RPM по-прежнему будет выполнена успешно, что может привести к путанице. См. Как выйти из rpm install в случае ошибки.

Другие вопросы по тегам