我正在尝试改进构建脚本(bash或Makefile)以在必要时安装一些先决条件。
我有很长的软件包列表(10-15),我确实只想在没有安装它们的情况下安装它们。
由于构建脚本可能由非root运行,我只想运行sudo yum install
一次,并且只在需要时运行(至少没有安装一个软件包)。
我目前的实施显然不是最佳的:
for PACKAGE in a b c ... ; do
yum list installed $PACKAGE >/dev/null 2>&1 || sudo yum install -q -y $PACKAGE ;
done
我该怎么做?
答案 0 :(得分:0)
当然,您可以将已安装的软件包列表放入文件中并在循环中运行grep,但如果您希望避免创建任何文件,则运行rpm
应该可以正常工作:
for p in a b c ... ; do
rpm -q > /dev/null 2>&1 $PACKAGE || sudo yum install -q -y $p
done
查询包信息时,rpm
在找到包时返回零,否则返回非零。