0

我正在使用 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 install 不满足我的 RPM 依赖关系,因为它是tomcat6而不是tomcat. 你怎么解决这个问题?

据我所知,没有办法 OR 依赖关系,所以我不能tomcat >= 6 or tomcat6 or tomcat7 or tomcat8以某种方式做,无论如何这都会很丑陋。

4

1 回答 1

1

你说的对。无法在 Requires 中使用布尔值。它目前正在开发中,可用于 rpm 的开发版本(称为 Rich Dependecy)。但是,这在任何发行版中都不可用。所以它不会帮助你。

您可以通过使用虚拟包来解决它。http://wiki.netbeans.org/Fedora_RPMs__-_Virtual_Packages

或在规范文件中使用条件

%if 0%{?rhel} > 0 && 0%{?rhel} < 7
Requires: tomcat6
%else
Requires: tomcat8
%endif

但是,这需要直接在规范文件中完成。我不确定如何/是否可以在 rpm-maven-plugin 中完成。

于 2016-01-06T13:59:06.260 回答