Как запросить файл, не принадлежащий 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 в случае ошибки.