10

我有一个 shell 脚本,它检查是否有互联网连接(通过 ping google),然后调用

yum install packageA packageB --assumeyes

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

4

3 回答 3

13

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

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

  1. 运行yum -y install $PACKAGES(我假设如果这是一个脚本,你真的想通过-y以避免提示)。
  2. 检查其退出状态以检测某些故障情况。
  3. Run rpm --query --queryformat "" $PACKAGES,对于每个成功安装的包都不会输出任何内容,并且会package <name> is not installed在每次失败时输出。
  4. 检查它的退出状态,这似乎是未成功安装的包的数量,即像往常一样成功时为 0。

这仅在PACKAGES包含yum预期可以在存储库中找到的普通包名称时才有效,如果它包含其他yum接受 URL、文件名或Provides:名称等内容时则无效。

于 2014-03-13T23:22:28.830 回答
8

根据这个随机帖子,看起来 yum 向 shell 返回了一个错误代码。您可以通过运行命令然后立即(作为下一个命令)执行以下操作来测试它:

echo $?

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

于 2011-12-09T14:51:16.007 回答
6

通过 ping google.com 并不能确保您尝试连接的 yum 存储库可用

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

yum list installed PACKAGE_NAME
于 2011-12-09T16:03:36.907 回答