如何确保在shell脚本中成功安装yum?

时间:2011-12-09 14:35:38

标签: bash shell yum

我有一个shell脚本,用于检查是否存在互联网连接(通过ping谷歌),然后调用

yum install packageA packageB --assumeyes

如何确认软件包已安装(或已安装)?我是否进行另一个yum调用并解析输出(如果系统使用其他语言,我认为这会变得非常复杂)?

3 个答案:

答案 0 :(得分:12)

我使用了以下方法,这可能不是万无一失,但似乎有效:

假设变量PACKAGES包含您要安装的软件包列表,那么:

  1. 运行yum -y install $PACKAGES(我假设这是一个脚本,你真的想通过-y来避免提示)。
  2. 检查其退出状态,以便检测某些失败情况。
  3. 运行rpm --query --queryformat "" $PACKAGES,它不会为每个成功安装的软件包输出任何内容,并会为每次失败输出package <name> is not installed
  4. 检查其退出状态,该状态似乎是未成功安装的软件包数量,即正常情况下成功为0。
  5. 仅当PACKAGES包含yum预期在存储库中找到的普通包名称时才会有效,而不是yum包含Provides:接受的其他内容,如URL,文件名或{{1}}个名字。

答案 1 :(得分:7)

基于this random post,看起来yum会向shell返回错误代码。您可以通过运行命令来测试它,然后立即(作为下一个命令)执行:

echo $?

这将打印上一个命令的返回码。成功应该是0,某种非零的失败。但这只是猜测,因为我现在还没有可以访问的盒子。 :)

答案 2 :(得分:6)

通过ping google.com无法确保您尝试连接的yum repo可用

检查软件包是否已安装的命令: -

yum list installed PACKAGE_NAME