Linux

重建的 kmod 包不是通過 YUM 更新,而是通過 rpm

  • July 2, 2014

我已經建構了一個具有以下版本的包:

kmod-dahdi-linux 10:2.9.1.1-75_shmz65.1.11.2.6.32_431.el6.i686

這應該是系統上安裝的升級:

kmod-dahdi-linux 0:2.9.0.1-72_centos6.2.6.32_431.el6.i686

當我這樣做時,yum localupdate我得到以下資訊:

Resolving Dependencies
--> Running transaction check
---> Package kmod-dahdi-linux.i686 0:2.9.0.1-72_centos6.2.6.32_431.el6.i686 will be updated
---> Package kmod-dahdi-linux.i686 10:2.9.1.1-75_shmz65.1.11.2.6.32_431.el6.i686 will be an update
--> Finished Dependency Resolution

但是當它遇到事務檢查時,我會遇到文件衝突,就像它不是更新包,而是並排安裝它一樣,如下所示:

file /lib/modules/2.6.32-431.el6.i686/dahdi/dahdi.ko from install of kmod-dahdi-linux-10:2.9.1.1-75_shmz65.1.11.2.6.32_431.el6.i686.i686
conflicts with file from package kmod-dahdi-linux-2.9.0.1-72_centos6.2.6.32_431.el6.i686.i686

我已經嘗試過舊版本的過時版本,我嘗試過提高時代(你可以看到我的時代現在是 10)

當我做:

rpm -Uvh kmod-dahdi-linux-2.9.1.1-75_shmz65.1.11.2.6.32_431.el6.i686.i686.rpm

它會正確升級。

我已經仔細檢查了 rpmversion 顯示為較新:

# rpmdev-vercmp 0:2.9.0.1-72_centos6.2.6.32_431.el6.i686 10:2.9.1.1-75_shmz65.1.11.2.6.32_431.el6.i686
10:2.9.1.1-75_shmz65.1.11.2.6.32_431.el6.i686 is newer

有任何想法嗎?

附加資訊:

我已經重新調整了我的 RPM 以具有完全相同的 dist 標籤,但它仍然失敗。

# yum localupdate kmod-dahdi-linux-2.9.1.1-11_centos6.2.6.32_431.el6.i686.i686.rpm
Resolving Dependencies
--> Running transaction check
---> Package kmod-dahdi-linux.i686 0:2.9.0.1-72_centos6.2.6.32_431.el6.i686 will be updated
---> Package kmod-dahdi-linux.i686 0:2.9.1.1-11_centos6.2.6.32_431.el6.i686 will be an update
--> Finished Dependency Resolution

Transaction Check Error:
 file /lib/modules/2.6.32-431.el6.i686/dahdi/dahdi.ko from install of kmod-dahdi-linux-2.9.1.1-11_centos6.2.6.32_431.el6.i686.i686 conflicts with file from package kmod-dahdi-linux-2.9.0.1-72_centos6.2.6.32_431.el6.i686.i686

Yum 有這個installonlypkg:s 指令,它所做的不是升級包,而是安裝,因​​此可以同時安裝同一包的兩個不同版本。

這對核心軟體包很有用,這通常是預設設置,因此它可以讓您回退到以前的核心,以防升級時出現錯誤。(來自 RHEL6 部署指南):

installonlypkgs=空格分隔的軟體包列表在這裡您可以提供一個以空格分隔的軟體包列表,yum 可以安裝,但永遠不會更新。請參閱 yum.conf(5) 手冊頁以獲取預設僅安裝的軟體包列表。

關於核心包的主題:

$$ … $$ 特別是,核心包應該總是列在 installonlypkgs 中(因為它們是預設的),

對於 kmod 包的情況,請查看此 bz的評論以了解 kmod 包受此影響的原因。這是保險絲,但同樣的邏輯適用於您的 rpm:

% rpm -qp –提供 kmod-fuse-2.7.4-21.el5.i686.rpm 核心模組 = 2.6.18-128.1.10.el5 fuse-kmod = 2.7.4-21.el5 modalias(char- Major-10-229)

kmod-fuse = 2.7.4-21.el5

…並且核心模組在 installonlypkgs 列表中,所以 yum 正在做它被告知的事情。

引用自:https://unix.stackexchange.com/questions/140174