Linux 如何在规范文件中要求RPM不拥有的文件;要求;线路?

Linux 如何在规范文件中要求RPM不拥有的文件;要求;线路?,linux,eclipse,rpm,centos7,rpm-spec,Linux,Eclipse,Rpm,Centos7,Rpm Spec,我已经安装了一个名为RationalSoftwareArchitect(RSA 9.5)的程序(在CentOS 7中),它是一个富客户机平台,与Eclipse类似,但没有实际安装RPM。RSA附带了一个安装bash脚本,它几乎只是将eclipse文件放到文件系统中。我的Eclipse可执行文件位于/opt/IBM/SDP/Eclipse,普通的Eclipse文件夹如“plugins”、“features”和“dropins”处于同一级别 我为以前版本的“real”Eclipse编写了一个规范文件

我已经安装了一个名为RationalSoftwareArchitect(RSA 9.5)的程序(在CentOS 7中),它是一个富客户机平台,与Eclipse类似,但没有实际安装RPM。RSA附带了一个安装bash脚本,它几乎只是将eclipse文件放到文件系统中。我的Eclipse可执行文件位于
/opt/IBM/SDP/Eclipse
,普通的Eclipse文件夹如“plugins”、“features”和“dropins”处于同一级别

我为以前版本的“real”Eclipse编写了一个规范文件,该文件只安装了一些我作为jar文件编写的java插件,将它们放在“dropins”文件夹中,然后调用
Eclipse-clean-initialize
,将Eclipse与我的新插件同步。这仍然适用于RSA

我的问题归结为这样一个事实:以前,我只是在spec文件中有一行类似于

要求:eclipse>=4.4.2
因为Eclipse是作为RPM安装的。现在已经安装了RSA,取代了Eclipse,并且没有与之相关的RPM,我需要找到一种方法,在安装RPM之前告诉spec文件要求“dropins”文件夹存在。可能是这样的:

需要:/opt/IBM/SDP/eclipse


我在上述方法中没有取得任何成功,我想知道是否有可能基于文件而不是包来设置RPM需求?我找不到关于这个主题的任何文档,希望你们都能帮忙!提前谢谢

仅供参考…我正在CentOS 7.2中使用rpm-build-4.11.3和rpmdevtools-8.3


编辑:添加在spec中使用绝对路径时从yum返回的错误消息
[root@localhosttrunk]#yum localinstall myplugin-1.1.6-rev1255.x86_64.rpm
加载的插件:fastestmirror、langpacks、rhnplugin
该系统正在接收RHN Classic或Red Hat卫星的更新。
检查myplugin-1.1.6-rev1255.x86_64.rpm:myplugin-1.1.6-rev1255.x86_64
标记要安装的myplugin-1.1.6-rev1255.x86_64.rpm
解决依赖关系
-->运行事务检查
--->将安装程序包myplugin.x86_64 0:1.1.6-rev1255
-->处理依赖项:/opt/IBM/SDP/eclipse for package:myplugin-1.1.6-rev1255.x86_64
从缓存的主机文件加载镜像速度
-->处理依赖项:/opt/IBM/SDP/eclipse for package:myplugin-1.1.6-rev1255.x86_64
-->已完成依赖项解析
错误:包:myplugin-1.1.6-rev1255.x86_64(/myplugin-1.1.6-rev1255.x86_64)
需要:/opt/IBM/SDP/eclipse
您可以尝试使用--skip break来解决这个问题
您可以尝试运行:rpm-Va--nofiles--nodigest

[root@localhosttrunk]#ll/opt/IBM/SDP/eclipse
-rwxr-xr-x。1根根74675根2015年1月28日/opt/IBM/SDP/eclipse

。。。rpm文件依赖项不根据文件系统上的内容工作,而是根据rpm%文件部分中指定的路径工作

因此,您不能使用
Requires:
来要求不属于RPM的文件

一种可能的替代方法是检查
%pre
部分中是否存在该文件,如果不存在,则以非零状态退出。有关如何使用该技术的示例,请参见至或至


请注意,
%pre
部分的非零退出状态将导致RPM安装失败,但RPM事务似乎仍然成功,这可能会导致混淆。请参阅。

我非常确定您可以拥有绝对路径。它会阻止您在没有它的情况下安装,但由于在任何RPM中都找不到它,
yum
/
dnf
将无法帮助您找到它。我以前这样做是为了强制glibc 32位库作为RPM的一项要求。@AaronD.Marasco请参见上面的编辑。当使用绝对路径时(在文件上运行
ls-al
时可以看到存在绝对路径),我仍然存在问题。在使用mock构建rpm时,可能会自动获取该要求。