- 我使用AWS EC2实例
- 我想设置一个版本为5.4.0的软件包,但
yum search all --enablerepo epel
提供的最新版本是5.0.0 - 因此,我在v5.4.0上做了
wget
和configure && make && make install
,这在网上是可用的
由于我们做了很多实例的起起伏伏,因此该解决方案过于耗时(编译时间),无法在部署时成为可行的解决方案。
- 然后,我从5.4.0版本的
tar.bz2
构建了一个RPM。为了确保不同环境之间的库和依赖项没有什么不同,我在与部署AMI相同的实例上运行了rpmbuild
- 在测试服务器上构建并部署了RPM之后,我尝试安装
gearmand
,结果如下-
[ec2-user@ip-10-0-0-62~]$sudo yum-install--enablerepo=epel gearmand加载的插件:优先级,更新motd,升级助手由于存储库优先级保护,565个包被排除在外解析依赖项-->正在运行事务检查--->将安装成套齿轮箱.x86_64 0:1.1.8-2.el6-->处理依赖项:包gearmand-1.1.8-2.el6.x86_64的libmysqlclient.so.16(libmysqlclient_16)(64位)-->处理依赖项:程序包gearmand-1.1.8-2.el6.x86_64的libpq.so.5()(64位)-->处理依赖项:包gearmand-1.1.8-2.el6.x86_64的libmysqlclient.so.16()(64位)-->处理依赖项:包的libgearman.so.8()(64位):gearmand-1.1.8-2.el6.x86_64-->处理依赖项:程序包gearmand-1.1.8-2.el6.x86_64的libevent-1.4.so.2()(64位)-->处理依赖项:程序包gearmand-1.1.8-2.el6.x86_64的libboostrongystem.so.5()(64位)-->处理依赖项:程序包gearmand-1.1.8-2.el6.x86_64的libboost_program_options-mt.so.5()(64位)-->正在运行事务检查--->软件包兼容主机-编程选项。将安装x86_64 0:1.41.0-11.10.amzn1--->将安装软件包compat-host-system.x86_64 0:1.41.0-11.10.amzn1--->将安装程序包compat-libvent.x86_64 0:1.4.13-4.10.amzn1--->将安装成套齿轮箱.x86_64 0:1.1.8-2.el6-->处理依赖项:包gearmand-1.1.8-2.el6.x86_64的libmysqlclient.so.16(libmysqlclient_16)(64位)-->处理依赖项:包gearmand-1.1.8-2.el6.x86_64的libmysqlclient.so.16()(64位)--->将安装程序包libgearman.x86_64 0:1.1.8-2.el6--->将安装程序包postgresql9-libs.x86_64 0:9.2.5-1.37.amzn1-->已完成相关性解析错误:包:gearmand-1.1.8-2.el6.x86_64(epel)需要:libmysqlclient.so.16(libmysqlclient_16)(64位)错误:包:gearmand-1.1.8-2.el6.x86_64(epel)需要:libmysqlclient.so.16()(64位)你可以尝试使用--skip-breaked来解决这个问题你可以试着运行:rpm-Va-nofiles-nodigest
这让我怀疑RPM安装在某种意义上"冻结并阻塞"了它所依赖的库。我有这种感觉,因为在构建RPM时,该包期望比亚马逊或epel repos上的库版本更高的库版本。一些例子-
+-------------+-------------------+----------------+
| name | amazon version | library wants |
+-------------+-------------------+----------------+
| glibc | 2.12 | 2.16 |
| perl | 5.10 | 5.18 |
| python | 2.6.9 | 2.7 |
+-------------+-------------------+----------------+
我在这里做错了什么吗?在构建RPM之前,我需要更改源代码/规范中的内容吗?因为这看起来只是冰山一角。
更改rpm规范文件,您可以在其中编辑所需的依赖项版本