我使用rpm-maven-plugin创建RPM。我希望对Tomcat版本6或更高版本有所依赖,所以: -
<requires>
<require>tomcat >= 6.0</require>
</requires>
所以我创建了一个Vagrant初始化的VM并尝试安装Tomcat: -
[vagrant@development ~]$ sudo yum install tomcat
Loaded plugins: fastestmirror
Setting up Install Process
Loading mirror speeds from cached hostfile
* base: www.mirrorservice.org
* extras: mirror.ukhost4u.com
* updates: mirror.ukhost4u.com
No package tomcat available.
Error: Nothing to do
所以我通过tomcat6包安装,这很好。问题是tomcat6安装不能满足我的RPM依赖性,因为它是tomcat6
而不是tomcat
。你怎么解决这个问题?
据我所知,那里没有OR依赖关系,所以我无法以某种方式做tomcat >= 6 or tomcat6 or tomcat7 or tomcat8
,无论如何都是丑陋的。
答案 0 :(得分:1)
你是对的。在Requires中使用boolean是不可能的。它目前正在开发中,可在rpm的devel版本中使用(并称为Rich Dependecy)。但是,这还没有在任何发行版中提供。所以它对你没有帮助。
您可以使用虚拟包解决此问题。 http://wiki.netbeans.org/Fedora_RPMs_-_Virtual_Packages
或在spec文件中使用条件
%if 0%{?rhel} > 0 && 0%{?rhel} < 7
Requires: tomcat6
%else
Requires: tomcat8
%endif
然而,这需要直接在spec文件中完成。我不确定如何在rpm-maven-plugin中完成此操作。