2016-11-10 6 views
2

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

Я написал файл спецификации для предыдущей версии «реального» 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 на основе файла, а не пакета? Я не могу найти документацию по этому вопросу и надеялся, что все могут помочь! Заранее спасибо.

FYI ... Я работаю в CentOS 7.2 с rpm-build-4.11.3 и rpmdevtools-8.3.


EDIT: Добавление сообщения об ошибке вернулось из ня при использовании абсолютного пути в спецификации

[[email protected] 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

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

+0

Я уверен, что вы можете иметь абсолютный путь. Он должен остановить вас от установки без него, но поскольку он не найден ни в одном RPM, 'yum' /' dnf' не сможет помочь вам его найти. Я сделал это раньше, чтобы принудительно использовать 32-битные библиотеки glibc в качестве требования к RPM. –

+0

@ AaronD.Marasco См. Вышеизложенное.При использовании абсолютного пути (который вы можете видеть, существует при запуске 'ls -al' в файле), у меня все еще есть проблемы. – mstep91

+0

Это требование может автоматически подбираться при построении оборотов в минуту с макетами. –

ответ

5

Согласно Fedora Packaging Guidelines:

... Зависимости rpm-файлов не работают acco rding до того, что находится в файловой системе, они работают по пути, указанному в разделе файлов rpm%.

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

Возможной альтернативой является проверка наличия файла в разделе %pre и выход с ненулевым статусом, если он отсутствует. См. Paul Rubel's reply - Failing an RPM install programatically in a spec step или ᴳᵁᴵᴰᴼ's reply - How to abort the installation of an rpm package if some conditions are not met in specfile? для примеров использования техники.

Обратите внимание, что ненулевой статус выхода из раздела %pre приведет к тому, что RPM не будет установлен, но транзакция RPM по-прежнему кажется успешной, что может вызвать путаницу. См. How to exit rpm install in case of an error.