2013-12-13 101 views
0
  1. 我使用AWS EC2实例。
  2. 我想设置一个版本为5.4.0的软件包,但最新的yum search all --enablerepo epel提供的是5.0.0。
  3. 我因此做了wgetconfigure && make && make install在v5.4.0这是可在网上。

因为我们做了很多实例的风风雨雨,这个解决方案是太费时(编译时间)成为上部署一个可行的解决方案。yum在安装rpm -ivh后未解析依赖关系

  1. 我然后从版本为5.4.0的tar.bz2构建了一个RPM。为了确保库和依赖关系在环境之间没有差异,我在实例上运行rpmbuild作为我们的部署AMI。
  2. 有过构建和部署测试服务器上的RPM之后,我尝试安装gearmand以下result-
 
[[email protected] ~]$ sudo yum install --enablerepo=epel gearmand 

Loaded plugins: priorities, update-motd, upgrade-helper 
565 packages excluded due to repository priority protections 
Resolving Dependencies 
--> Running transaction check 
---> Package gearmand.x86_64 0:1.1.8-2.el6 will be installed 
--> Processing Dependency: libmysqlclient.so.16(libmysqlclient_16)(64bit) for package: gearmand-1.1.8-2.el6.x86_64 
--> Processing Dependency: libpq.so.5()(64bit) for package: gearmand-1.1.8-2.el6.x86_64 
--> Processing Dependency: libmysqlclient.so.16()(64bit) for package: gearmand-1.1.8-2.el6.x86_64 
--> Processing Dependency: libgearman.so.8()(64bit) for package: gearmand-1.1.8-2.el6.x86_64 
--> Processing Dependency: libevent-1.4.so.2()(64bit) for package: gearmand-1.1.8-2.el6.x86_64 
--> Processing Dependency: libboost_system.so.5()(64bit) for package: gearmand-1.1.8-2.el6.x86_64 
--> Processing Dependency: libboost_program_options-mt.so.5()(64bit) for package: gearmand-1.1.8-2.el6.x86_64 
--> Running transaction check 
---> Package compat-boost-program-options.x86_64 0:1.41.0-11.10.amzn1 will be installed 
---> Package compat-boost-system.x86_64 0:1.41.0-11.10.amzn1 will be installed 
---> Package compat-libevent.x86_64 0:1.4.13-4.10.amzn1 will be installed 
---> Package gearmand.x86_64 0:1.1.8-2.el6 will be installed 
--> Processing Dependency: libmysqlclient.so.16(libmysqlclient_16)(64bit) for package: gearmand-1.1.8-2.el6.x86_64 
--> Processing Dependency: libmysqlclient.so.16()(64bit) for package: gearmand-1.1.8-2.el6.x86_64 
---> Package libgearman.x86_64 0:1.1.8-2.el6 will be installed 
---> Package postgresql9-libs.x86_64 0:9.2.5-1.37.amzn1 will be installed 
--> Finished Dependency Resolution 
Error: Package: gearmand-1.1.8-2.el6.x86_64 (epel) 
      Requires: libmysqlclient.so.16(libmysqlclient_16)(64bit) 
Error: Package: gearmand-1.1.8-2.el6.x86_64 (epel) 
      Requires: libmysqlclient.so.16()(64bit) 
You could try using --skip-broken to work around the problem 
You could try running: rpm -Va --nofiles --nodigest 

这使我怀疑RPM安装在某种意义上是“冻结和阻塞'它依赖的图书馆。我觉得这样,因为在构建RPM时,该软件包预期的库版本要高于amazon或epel回购版上的版本。有些examples-

+-------------+-------------------+----------------+ 
| name  | amazon version | library wants | 
+-------------+-------------------+----------------+ 
| glibc  |  2.12  |  2.16  | 
| perl  |  5.10  |  5.18  | 
| python  |  2.6.9  |  2.7  | 
+-------------+-------------------+----------------+ 

我在这里做得不对,我需要构建RPM前更改源/规范的东西吗?因为这看起来只是冰山一角。

+1

“然后,我建立了一个RPM” - 你需要发布'spec'文件。混合RPM和基于源代码的安装可能变得非常多毛。 –

回答

0

变化RPM的spec文件,您可以编辑所需要的依赖版本