使用升级 AIX 系统后通过 NIM 迁移 mksysb,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
?
答案1
要将 AIX-rpm 虚拟包更新到正确的操作系统级别,请运行:
$ sudo /usr/sbin/updtvpkg
Please wait...
然后将升级 AIX-rpm 虚拟包:
$ rpm -q AIX-rpm
AIX-rpm-7.1.4.31-8
答案2
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 时出现类似于“cannot read header at 20760 for Lookup”的错误,请运行 rpm重建数据库:
rpm --rebuilddb
运行 updtvpkg 后,您可以运行 rpm -qa 来查看新的 AIX-rpm 软件包。