2013-12-13 89 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文件,您可以編輯所需要的依賴版本