工作中关于rpm的一个简单但头疼的问题: 公司有个需要自动化更新rpm包的需求,rpm包名是:tingyun-agent-php-1.0.5-1.x86_64,本来是一个很简单的东西,一行代码就可以实现: for a in `rpm-aq|grep tingyun`;do rpm -e $a;done 但是结果是:
[iyunv@centos scripts]# for a in`rpm -aq|grep tingyun`;do rpm -e $a;done error: packagetingyun-agent-php-1.0.5-1.x86_64 is not installed 报了个错误,说没有安装此包,但是很明显,查询这个包是存在的:
[iyunv@centos scripts]# rpm-aq|grep tingyun tingyun-agent-php-1.0.5-1.x86_64 手动执行可以卸载没有问题:
[iyunv@centos scripts]# rpm -etingyun-agent-php-1.0.5-1.x86_64 [iyunv@centos scripts]# 但是这个需要用脚本实现,于是我写在了脚本里,用-x来查看步骤:
[iyunv@centos scripts]# sh -xtest.sh ++ rpm -aq ++ grep tingyun + for a in '`rpm -aq|greptingyun`' + rpm -e'tingyun-agent-php-1.0.5-1.x86_64' error:package tingyun-agent-php-1.0.5-1.x86_64 is not installed 然后我把倒数第二行的结果拿出来单独执行,是可以执行成功的:
[iyunv@centos scripts]# rpm -e'tingyun-agent-php-1.0.5-1.x86_64' [iyunv@centos scripts]# 于是我换一种方法:
[iyunv@centos scripts]# rpm-aq|grep tingyun|xargs rpm -e error: packagetingyun-agent-php-1.0.5-1.x86_64 is not installed 结果还是一样,多么奇葩的问题,我在其他的虚拟机上用这种方法都正常,但是这台虚拟机却碰到这种头疼的问题,怀疑可能和系统有关,百度和google上都找不到答案。纠结了一整天,没办法只好向老男孩老师请教,老师给出我一个方法如下,
for a in `rpm -aq tingyun-agent-php`;do rpm -e $a;done
直接用rpm –aq rpm包名,不用grep, 完美解决问题。
|