2013-07-10 123 views
21

我在一個文件夾中有一堆rpm文件。我正在嘗試安裝它們: rpm -ivh *.rpm因此rpm可以處理正確的安裝順序。RPM忽略衝突

在一些這些RPM我已經安裝在我的系統的新版本,所以我得到例如:

package info-5.0-1 (which is newer than info-4.13a-2) is already installed

/opt/freeware/man/man1/infokey.1 from install of info-4.13a-2 conflicts with file from package info-5.0-1

有沒有辦法忽略舊的.rpm文件和使用已安裝的新版本解決依賴性問題?我想到了--force選項。但是如何解決衝突?用舊版本覆蓋它們還是忽略它們而留下新版本?

歡迎任何想法。

回答

3

從上下文來看,衝突是由包的版本引起的。
讓我們看一下說明書關於rpm

--force 
    Same as using --replacepkgs, --replacefiles, and --oldpackage. 

--oldpackage 
    Allow an upgrade to replace a newer package with an older one. 

所以,你可以執行命令rpm -Uvh info-4.13a-2.rpm --force解決您的問題。

+1

這沒有回答我的問題。就像我說過的,我想離開安裝的新軟件包。不能用舊的替換它... –

7

嘗試梳洗命令:

rpm -Fvh *.rpm 
+0

清新的命令只會更新已經在系統中的軟件包。沒有用,如果我想安裝一個新的包... –

+0

我不認爲我們可以保留兩個不同的版本包安裝在服務器上。 –

15

--force選項將重新安裝已經安裝的軟件包和其他包覆蓋已安裝的文件。你通常不需要這個。

如果你告訴rpm從某個目錄安裝所有的RPM,那麼它就是這樣做的。 rpm不能忽略爲安裝列出的RPM。您必須從列表(或目錄)手動刪除不需要的RPM。

您可以刪除舊的RPM,並且rpm將解決與安裝的RPM的較新版本的依賴關係。但是,如果沒有安裝RPMs完全取決於舊版本,這隻會起作用。

如果您確實需要不同版本的相同RPM,那麼RPM必須是relocatable。然後您可以告訴rpm將特定的RPM安裝到不同的目錄。如果文件沒有衝突,那麼你可以安裝不同的版本rpm -izypper in不能安裝不同版本的RPM)。例如,我將紅寶石作爲可重定位的RPM包裝在工作中。所以我可以安裝相同gem的不同版本。

我不知道RPM與哪些文件衝突,但是如果它們都是「正好」手冊頁,那麼您可能只需用rpm -i --replacefiles的舊文件覆蓋新文件即可。唯一的問題是,它可能會混淆正在閱讀舊手冊頁的人,並認爲它是針對實際版本的。另一個問題是rpm --verify命令。如果舊套件覆蓋了一些文件,它會抱怨新套件。

這可能是https://serverfault.com/questions/522525/rpm-ignore-conflicts的副本嗎?