在通过 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 虚拟包更新到正确的操作系统级别,请运行:
然后将升级 AIX-rpm 虚拟软件包:
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