我正在Centos / RHEL 6上构建和安装自定义RPM。在容器和VM上部署时,一切都按预期工作,但是,在生产盒上我们有额外的内部存储库。 yum install my.rpm
导致与php70w-*
冲突:
错误:php70w-与php-common-5.3.3-46.el6_7.1.x86_64的常见冲突 您可以尝试使用--skip-broken来解决问题 尝试运行:rpm -Va --nofiles --nodigest
由于RPM的要求,所选择的php版本应该是5.3.3。 php-gd
列出.spec
,强制执行:{/ p>
---> Package php-gd.x86_64 0:5.3.3-46.el6_7.1 will be installed
--> Processing Dependency: php-common(x86-64) = 5.3.3-46.el6_7.1 for package: php-gd-5.3.3-46.el6_7.1.x86_64
有趣的是,如果我手动安装所有php-*
包(完全按照.spec
文件中列出的那样),然后安装包,一切正常。 (这验证冲突与其余/非PHP依赖关系无关)。请注意,我在规范中有AutoReqProv: no
问题:
my.rpm
安装阻止此行为?我考虑的解决方案是:
在所有php要求中明确声明版本<=5.4
。但是,由于我不知道是什么让yum选择版本7,我不确定这是否会奏效。另外,如果可能的话,我更喜欢保持依赖版本的版本。一旦所有需要的php模块在php 7中可用或者我们的软件更改后我们删除php-gd
,最好移植到php 7而不更改规范中的所有版本。
在主机上的存储库定义中,我可以排除包。我想避免这种情况 - 我控制RPM规范,但存储库由sysadmins设置(使用puppet)
my.rpm
。我不喜欢的解决方案,因为我们将安装分为两个步骤和两个不同的系统:puppet和rpm。任何帮助和/或想法都将不胜感激
答案 0 :(得分:2)
php70w-common
看起来像一个webtatic或原子回购包。
无论哪种方式,您都需要确定它属于哪个repo,要么在安装时有选择地排除repo,要么配置存储库优先级。
您可以轻松找到:
yum info php70w-common
我更喜欢优先级方法,它更清洁,更便携。