【问题标题】:How to sudo yum install a list of packages only if they are not installed?仅在未安装软件包的情况下如何 sudo yum 安装软件包列表?
【发布时间】:2016-10-19 19:31:36
【问题描述】:

我正在尝试改进构建脚本(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 

我该怎么做?

【问题讨论】:

  • yum 可以得到一个包列表——你有没有直接尝试不循环?
  • 如果你给它提供了多个包名作为参数,如果指定的包之一丢失,它不会返回错误代码。例如,如果 a 已安装而 b 未安装,“a b”将返回成功 (0),使其无用。

标签: bash yum


【解决方案1】:

当然,您可以将已安装软件包的列表放入一个文件中并循环运行 grep,但如果您希望避免创建任何文件,运行 rpm 应该可以:

for p in a b c ... ; do 
  rpm -q > /dev/null 2>&1 $PACKAGE || sudo yum install -q -y $p
done 

查询包信息时,rpm在找到包时返回零,否则返回非零。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-28
    • 1970-01-01
    • 2020-03-22
    • 1970-01-01
    • 2015-06-28
    • 2018-09-16
    相关资源
    最近更新 更多