我想用一个yum
命令安装多个包,如果其中任何一个不可用,就会失败。但是,虽然yum install -y foobar
由于没有foobar
软件包而会失败,但yum install -y mysql foobar
会安装mysql
并默默地忽略丢失的foobar
软件包。
有没有一种好方法来检查所有请求的软件包是否已安装?我最好的想法是No package .* available
在输出中查找字符串,所以基本上:
yum install -y mysql foobar | grep 'No package .* available'; [ ! $? = 0 ]
问题是,这取决于 打印的错误消息yum
,该消息可能会随着时间的推移而改变。grep
还会吞掉 的输出yum
,这可能会使将来除了不可用的包之外的调试问题变得复杂。
答案1
如果缺少任何包,使用该--setopt=skip_missing_names_on_install=False
参数会导致失败:yum
yum install -y --setopt=skip_missing_names_on_install=False mysql foobar