RPM的可靠性如何涵盖不同版本的Tomcat?

时间:2016-01-06 09:47:26

标签: maven tomcat vagrant rpm rpm-maven-plugin

我使用rpm-maven-plugin创建RPM。我希望对Tomcat版本6或更高版本有所依赖,所以: -

<requires>
   <require>tomcat &gt;= 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,无论如何都是丑陋的。

1 个答案:

答案 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中完成此操作。