测试 rpm 安装脚本



我正在编写一个自动安装 Apache 的脚本。
我的预测试的一部分是检查是否安装了 rpm。
例如,要安装 apache,您需要 zlib 和 zlib-devel

所以基本上,我做一个rpm -qa zlib,然后将输出存储在一个变量上。然后我重复rpm -qa,但用 zlib-devel。
之后,我检查存储变量的版本。
例如:zlib-1.2.8-3.fc20.x86_64zlib-devel-1.2.8-3.fc20.x86_64
我将变量分解为以 1.2.8-3.fc20.x86_64 结尾,我比较 2 个变量,如果正确,脚本将继续。

问题是,如果安装了多个 rpm,则默认情况下它会继续。它只检查第一次安装。

有没有更简单的方法来检查转速安装?


这是代码的思想:

zlib_rpm=`rpm -qa zlib`
if [ -n "$zlib_rpm" ]
then
    zlib_devel_rpm=`rpm -qa zlib-devel*`
    if [ -n "$zlib_devel_rpm" ]
    then
        version_zlib_rpm=`rpm -qa zlib | cut -c 6-`
        version_zlib_devel_rpm=`rpm -qa zlib-devel* | cut -c 12-`
        if [ "$version_zlib_rpm" = "$version_zlib_devel_rpm" ]
        then
            echo "zlib rpm        --> PASSED"
            echo "zlib-devel rpm  --> PASSED"
        fi
    else
        echo "zlib-devel rpm      --> FAILED"
        echo "You can find instructions on how to install rpms on /mw_share/script/instructions/rpm_install"
        exit
    fi
else
    echo "zlib rpm      --> FAILED"
    echo "You can find instructions on how to install rpms on /mw_share/script/instructions/rpm_install"
    exit
fi

谢谢

rpm实用程序具有您可以使用的丰富选项。在您的特定情况下,我建议您使用--qf选项。这将允许您仅打印版本和体系结构,而无需cut输出。

rpm -q --qf "%{version}.%{arch}n" zlib

例如,如果只想查询特定体系结构的包,则可以在包名后加上后缀x86_64以查询 64 位包。

rpm -q --qf"%{version}.%{arch}n" zlib.x86_64

如果包不存在,rpm 实用程序将返回非零值。

注意:查询特定包时不需要选项 -a。此选项仅用于查询所有包。

相关内容

  • 没有找到相关文章

最新更新