linux – 用于验证rpm是否至少在给定版本的Bash脚本
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了linux – 用于验证rpm是否至少在给定版本的Bash脚本,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2243字,纯文字阅读大概需要4分钟。
内容图文
我需要编写一个脚本来验证RPM是否至少是Linux中的给定版本.
>问题1:如何在变量$RPM_VERSION中获取RPM版本,以便它包含一直到“.src.rpm”的版本?
>问题2:比较两个版本的最佳方法是什么?
例如:rpm-4.2-9.69.src.rpm与rpm-4.14-0.69.src.rpm相比.这是我的尝试,但它不起作用:
STR_BASE_ACCEPTABLE_VER="rpm-4.2-0.69.src.rpm"
if [[ "$RPM_VERSION" < "$STR_BASE_ACCEPTABLE_VER" ]]; then
echo "$RPM_VERSION is too low..." else
echo "$RPM_VERSION is fine" fi
解决方法:
解析版本
哈克的方式
对于第一部分,我将查询RPM以获取特定版本信息.
$rpm -qi vim-enhanced | grep Version
Version : 7.4.417
然后你可以解析这个:
$rpm -qi vim-enhanced | awk -F': ' '/Version/ {print $2}'
7.4.417
这可以捕获到变量中,如下所示:
$RPM_VERSION=$(rpm -qi vim-enhanced | awk -F': ' '/Version/ {print $2}')
$echo $RPM_VERSION
7.4.417
使用查询格式
rpm工具还提供了一个名为–queryformat的工具,它允许您自定义它生成的输出.知道这一点你可以告诉rpm打印“VERSION”宏,如下所示:
$rpm -q --queryformat '%{VERSION}' vim-enhanced
7.4.417
把它放到一个变量:
$RPM_VERSION=$(rpm -q --queryformat '%{VERSION}' vim-enhanced)
注意:您可以使用–querytags切换到rpm来查看所有查询标记,例如:
$rpm --querytags | head -5
ARCH
ARCHIVESIZE
BASENAMES
BUGURL
BUILDARCHS
比较版本
做比较会更棘手.幸运的是,rpmdevtools包中有一个名为rpmdev-vercmp的工具可以帮助你.
用法
$rpmdev-vercmp --help
rpmdev-vercmp <epoch1> <ver1> <release1> <epoch2> <ver2> <release2>
rpmdev-vercmp <EVR1> <EVR2>
rpmdev-vercmp # with no arguments, prompt
Exit status is 0 if the EVR's are equal, 11 if EVR1 is newer, and 12 if EVR2
is newer. Other exit statuses indicate problems.
如果您注意到它返回的退出状态,您可以通过询问此工具,为其提供RPM的2个名称,找出哪个版本更新.
例
$rpmdev-vercmp rpm-4.2-9.69 rpm-4.14-0.69
rpm-4.2-9.69 < rpm-4.14-0.69
$echo $?
12
所以基于12的退出代码,第二个参数将是2中的较新者.
把它放在一起
您的解决方案将如下所示:
rpmdev-vercmp $RPM_VERSION $STR_BASE_ACCEPTABLE_VER > /dev/null
if [[ $? == 12 ]]; then
echo "$RPM_VERSION is too low..."
else
echo "$RPM_VERSION is fine"
fi
那么如果我们要设置变量如下:
$STR_BASE_ACCEPTABLE_VER="rpm-4.2-9.69"
$RPM_VERSION="rpm-4.14-0.69"
$./cmp_rpmvers.bash
rpm-4.14-0.69 is fine
如果我交换它们:
$STR_BASE_ACCEPTABLE_VER="rpm-4.14-0.69"
$RPM_VERSION="rpm-4.2-9.69"
$./cmp_rpmvers.bash
rpm-4.2-9.69 is too low...
内容总结
以上是互联网集市为您收集整理的linux – 用于验证rpm是否至少在给定版本的Bash脚本全部内容,希望文章能够帮你解决linux – 用于验证rpm是否至少在给定版本的Bash脚本所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。