2015-10-21 37 views
1

目前我正在嘗試安裝一個rpm secured_soft_2.0.0.rpm,並且我 無法安裝它,因爲我們已經安裝了secure_soft_1.3.0。如何安裝兩個不同版本的相同rpm並使它們並行工作

要求是我們需要安裝兩個版本。

複雜性:

這些包inturn有相關RPM的(很多人),所有這些 相互依存的轉速下也有版本 例如:secured_soft_1.3.0只與它們的1.3版本, 和secured_soft_2包工程。 0.0.rpm僅適用於2.0版本的依賴項。 所以所有這些依賴關係也需要重新安裝,甚至這些依賴關係應該並行安裝,而不刪除舊的。

最後,這兩個版本都包含共享庫,並且這些共享庫的名稱中沒有版本號。

#rpm -ivh secured_soft_2.0.0.rpm 
error: Failed dependencies: 
init-class >= 1.4.17.1-1 is needed by secured_soft_2.0.0.rpm  
init-connection-interface >= 2.0.11.0 is needed by secured_soft_2.0.0.rpm 
init-logger >= 2.0.11.0 is needed by secured_soft_2.0.0.rpm 
init-security >= 2.0.11.0 is needed by secured_soft_2.0.0.rpm 

因爲我已經指定我們已經secured_soft_1.3.0.rpm安裝和 以上的依賴性也可用不同的版本,但。 所以我們需要安裝上述依賴性和還需要依賴的舊版本的 舊RPM的工作

例如:secured_soft_2.0.0.rpm有libArt.so libSec.so等 被複制到/ usr/lib目錄

同樣secured_soft_1.3.0.rpm也有libArt.so libSec.so等 它們已經位於/ usr/lib目錄

我試圖重命名等等的,但仍然沒有的IAM能安裝。

是否有可能改變這些位置以便完成工作 有沒有什麼辦法可以做到。

目前,iam卡在這裏,並需要在這方面的意見 欣賞這方面的任何幫助。

回答

1

由於程序使用相同的文件名,你需要將它們放在同一臺機器上,你可能能夠將舊版本移動到另一個目錄樹,並使其工作

您可以使用許多沒有編譯路徑名的應用程序來做到這一點。

例如,

  • 安裝舊的版本(這聽起來像你在哪裏開始)
  • 使用rpm -ql每個含無版本的可執行文件,庫和相關文件的軟件包。
  • 使用tar來捕捉相對/usr(但省略目錄不擁有由包),這些文件的存檔。
  • 創建一個新目錄,例如/usr/local/myapp,並在那裏解壓縮舊版本。在新位置
  • 更新配置文件需要

對於諸如此,我想在一個更新PATH(也許將LD_LIBRARY_PATH),以強制程序從新位置運行的腳本運行。您可以使用諸如stracelsof之類的工具,即通過查找程序打開的文件來驗證它是否可行。

一旦您的舊版本在新位置正常工作,您可以卸載它的RPM並安裝新版本的應用程序。

警告:如果更新包從操作系統的新版本複製,但是,任務很可能是超出你的能力,你是否選擇重新編譯的新包,以適應的另一種方法在現有的系統上。

構建新/定製程序包是重新編譯新版本的一條途徑。如果你有源的RPM每一部分,這是一個出發點:

  • 提取源RPM,例如文件,使用腳本如unrpm(見例如HowTo: Extract an RPM Package Files Without Installing It),和
  • 這些提取的文件複製到自己的預期位置在構建樹,如$HOME/rpmbuild/SOURCES$HOME/rpmbuild/SPECS
  • 修改規範文件使用修改後的規範中使用其他位置
  • 建立新的/修改的軟件包-文件。
+0

舊版本及其所有依賴項已經安裝,並且新版本需要安裝其依賴項。有一種方法可以爲這些最新的rpm和依賴項編寫新規範,並將它們安裝在單獨的文件夾中/ usr/etc並讓他們工作。目前,問題在於安裝較新的版本,iam無法安裝,因爲較低的版本依賴性以及此軟件包的舊版本已經安裝。 Iam也對這些rpm realted新東西感興趣,如果有人能夠就如何重建新的rpms提供建議,我將不勝感激。 – user2256825

+0

要做到這一點,您必須重新編譯所有內容。從問題中的信息來看,這聽起來像很多工作。這取決於你想花費你的時間。 –

+0

是的,我需要重新編譯並重新創建所有最新的相關rpm和主rpm,以避免衝突。有沒有辦法。我在YouTube上發現了一些關於構建rpm的視頻,但是找不到任何有關編輯rpm並重新打包它的內容。有沒有辦法做到這一點?\ – user2256825

0

不,開箱即可。

我強烈建議您查看Docker,在這裏您可以將每個容器放入自己的容器中,讓他們處理所有依賴性問題。

相關問題