Upgrade

在 AIX mksysb NIM 遷移升級後,虛擬包 AIX-rpm 與作業系統級別不同步

  • March 15, 2019

在通過 NIM 使用 mksysb 遷移升級 AIX 系統後,AIX-rpm 虛擬包被遺留在之前的 AIX 級別:

$ oslevel -r
7100-04
$ rpm -q AIX-rpm
AIX-rpm-6.1.7.0-7

這可以防止安裝依賴於某個 AIX-rpm 版本的其他 RPM,例如:

$ sudo rpm -Uvh libgcc-6.3.0-2.aix7.1.ppc.rpm
error: failed dependencies:
       AIX-rpm >= 7.1.0.0 is needed by libgcc-6.3.0-2

您可以通過查詢包的依賴項來預先測試這種情況:

$ rpm -qp --requires libgcc-6.3.0-2.aix7.1.ppc.rpm
AIX-rpm >= 7.1.0.0
AIX-rpm < 7.2.0.0
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1

…或使用 rpm--test選項:

$ sudo rpm -Uvh --test libgcc-6.3.0-2.aix7.1.ppc.rpm
error: failed dependencies:
       AIX-rpm >= 7.1.0.0 is needed by libgcc-6.3.0-2

如何將 AIX-rpm 安裝或升級到正確的級別,以便無需強制安裝額外的 RPM --nodeps

要將 AIX-rpm 虛擬包更新到正確的作業系統級別,請執行:

$ sudo /usr/sbin/updtvpkg
Please wait...

然後將升級 AIX-rpm 虛擬軟體包:

$ rpm -q AIX-rpm
AIX-rpm-7.1.4.31-8

AIX-rpm 是一個“虛擬”包,它反映了 installp 在系統上安裝的內容。它是在安裝 rpm.rte 時由 /usr/sbin/updtvpkg 腳本創建的,並且可以在管理員選擇的任何時間執行(通常在使用 installp 安裝某些東西後,以滿足 RPM 包的某些依賴性所需)。

由於 AIX-rpm 必須有某種版本號,它只反映了執行 /usr/sbin/updtvpkg 的系統上的 bos.rte 級別。它只是提供資訊 - 不應該檢查 AIX-rpm 的級別。

AIX 不會在每次安裝或解除安裝某些東西時自動執行 /usr/sbin/updtvpkg,因為在一些安裝了大量軟體的較慢系統上,/usr/sbin/updtvpkg 可能需要很長時間。

如果要手動執行命令:

/usr/sbin/updtvpkg

如果在執行 updtvpkg 時收到類似於“無法讀取 20760 處的標頭進行查找”的錯誤,請執行 rpm rebuilddb:

rpm –rebuilddb

執行 updtvpkg 後,您可以執行 rpm -qa 來查看新的 AIX-rpm 包。

https://unixhealthcheck.com/blog?id=305

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