我已经安装了(在CentOS 7中)一个名为Rational Software Architect(RSA 9.5)的程序,它是一个富客户端平台,就像Eclipse一样,但没有实际安装RPM。 RSA附带了一个安装bash脚本,它几乎只是将eclipse文件丢弃到文件系统上。我的Eclipse可执行文件位于/opt/IBM/SDP/eclipse
,普通的Eclipse文件夹,如“插件”,“功能”和“dropins”在同一级别。
我为之前版本的“真正的”Eclipse编写了一个spec文件,它只是安装了我编写为jar文件的一些java插件,将它们放在“dropins”文件夹中,然后调用eclipse -clean -initialize
来同步Eclipse用我的新插件。这仍适用于RSA。
我的问题归结为以前的事实,我只是在spec文件中有一行类似于
Requires: eclipse >= 4.4.2
因为Eclipse是作为RPM安装的。既然已经安装了RSA,取代了Eclipse,并且没有与之关联的RPM,我需要找到一种方法来告诉spec文件在安装RPM之前要求“dropins”文件夹存在。也许是这样的:
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
答案 0 :(得分:5)
根据Fedora Packaging Guidelines:
... rpm文件依赖项根据文件系统上的内容不起作用,它们根据rpm%files部分中指定的路径工作。
因此,您无法使用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。