我正在编写一个自动安装Apache的脚本
我的预测试的一部分是检查rpm是否已安装
例如,要安装apache,您需要zlib和zlib-devel
所以基本上,我做一个rpm -qa zlib
,然后将输出存储在一个变量上。然后我用zlib-devel重复rpm -qa
之后,我检查存储变量的版本
例如: zlib-1.2.8-3.fc20.x86_64 和 zlib-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
由于
答案 0 :(得分:0)
rpm
实用程序具有丰富的选项供您使用。在您的特定情况下,我建议使用--qf
选项。这将允许您打印版本和体系结构,只需要cut
输出。
rpm -q --qf "%{version}.%{arch}\n" zlib
如果您只想查询特定体系结构的包,可以使用x86_64对packagename进行后缀,以查询64位包。
rpm -q --qf"%{version}.%{arch}\n" zlib.x86_64
如果包不存在,rpm
实用程序将返回非零值。
注意:在查询特定包时,不需要选项-a。此选项仅用于查询所有包。