You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何识别已安装的低版本RPM?对比/tmp/list_of_rpms目录下的RPM包

简便实现RPM版本对比的方法

要找出/tmp/list_of_rpms目录中版本高于系统已安装的RPM包,不用复杂正则处理,有两种直接可行的方法:

方法一:用rpmdev-vercmp工具批量对比

先安装rpmdevtools包(内置的rpmdev-vercmp专门处理RPM版本号对比,能规避手动写正则踩的格式坑),然后执行以下脚本:

for rpm_file in /tmp/list_of_rpms/*.rpm; do
    # 提取包名
    pkg=$(rpm -qp --queryformat '%{NAME}' "$rpm_file")
    # 获取已安装版本(未安装则返回空)
    installed_ver=$(rpm -q --queryformat '%{VERSION}-%{RELEASE}' "$pkg" 2>/dev/null)
    
    if [ -n "$installed_ver" ]; then
        pkg_ver=$(rpm -qp --queryformat '%{VERSION}-%{RELEASE}' "$rpm_file")
        # 对比版本:已安装版本低于包内版本时输出提示
        if rpmdev-vercmp "$installed_ver" "$pkg_ver" -lt 0; then
            echo "需更新:$pkg | 已安装:$installed_ver | 可用:$pkg_ver"
        fi
    else
        echo "$pkg:未安装"
    fi
done

方法二:用dnf直接检查更新(适用于RHEL/CentOS 8+)

如果系统使用dnf包管理器,直接用check-update命令就能批量检测本地包与已安装版本的差异:

dnf check-update --assumeno /tmp/list_of_rpms/*.rpm | grep -v 'No match for argument'

该命令会自动筛选出已安装版本低于本地包的条目,--assumeno仅做模拟检查,不会触发实际安装操作。

内容的提问来源于stack exchange,提问作者jessica

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 01:05:25