【问题标题】:Puppet Nginx Install CentOsPuppet Nginx 安装 CentO
【发布时间】:2015-09-08 13:14:55
【问题描述】:

谁能告诉我为什么这不起作用?这段代码在 Ubuntu 服务器上运行良好,但在 CentOS 上崩溃。我正在运行 Puppet 版本3.7.2

node default {
  package { 'httpd':
    ensure => 'absent'
  }

  package { 'nginx':
    ensure => 'installed',
    require => Package['httpd'],
  }
}

我收到此错误:

Error: Execution of '/bin/yum -d 0 -e 0 -y list nginx' returned 1: Error: No matching Packages to list
Error: /Stage[main]/Main/Node[default]/Package[nginx]/ensure: change from absent to present failed: Execution of '/bin/yum -d 0 -e 0 -y list nginx' returned 1: Error: No matching Packages to list

【问题讨论】:

    标签: puppet


    【解决方案1】:

    nginx 不在默认的 CentOS 存储库中;它需要epel。在你可以安装包之前,你需要epel-release

    package { 'epel-release':
      ensure => 'installed',
    }
    
    package { 'nginx':
      ensure  => 'installed',
      require => [Package['httpd'], Package['epel-release']],
    }
    

    顺便问一下,您安装的 nginx 是否特别要求在安装之前没有 httpd??您应该能够删除 httpd 元参数依赖项。

    【讨论】:

    • 我把它放在那里是因为我不小心安装了它。感谢您的回复。有没有我可以参考的网站来解决这样的未来问题?我的意思是当不同的操作系统具有其他操作系统可能没有的包依赖关系时。或者整个操作系统的一般违规行为(抱歉这个问题含糊不清)
    • 如果你不小心安装了它,你可以从 require 语句中删除它,因为它会在你的 puppet 运行中的某个时候卸载。回复:防止冲突...librarian-puppet 对于下载和管理依赖项很有用。它还可以固定模块版本以防止冲突。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-04
    • 1970-01-01
    相关资源
    最近更新 更多