/usr/sbin/updtvpkg

/usr/sbin/updtvpkg

使用升级 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 软件包。

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

相关内容