Puppet安装包大于&少于?

时间:2017-06-28 20:27:17

标签: puppet

如果我有以下内容,它可以正常工作:

package { 
  2klic-certificates>=1.0.3: ensure => installed,
}

2klic-certificates来自自定义存储库,我们也有自己的beta版本。所以我也想提出一个上限。我在尝试:

package { 
  2klic-certificates>=1.0.3<1.1.0: ensure => installed,
}

这将返回错误:

Error: Execution of '/usr/bin/apt-get -q -y -o DPkg::Options::=--force-confold --force-yes install 2klic-certificates>=1.0.3<1.1.0' returned 100: Reading package lists...
Building dependency tree...
Reading state information...
E: Unable to locate package 2klic-certificates>
Error: /Stage[main]/Main/Node[default]/Package[2klic-certificates>=1.0.3<1.1.0]/ensure: change from purged to present failed: Execution of '/usr/bin/apt-get -q -y -o DPkg::Options::=--force-confold --force-yes install 2klic-certificates>=1.0.3<1.1.0' returned 100: Reading package lists...
Building dependency tree...
Reading state information...
E: Unable to locate package 2klic-certificates>

我也试过了:

package { 
  2klic-certificates>=1.0.3 and <1.1.0: ensure => installed,
}

查看documentation我看不到明确指定最小和最大版本号的选项。这可能吗?

1 个答案:

答案 0 :(得分:0)

我将保持开放,因为这个答案不是一个完整的解决方案,而是一个解决方法(已确认适用于基于apt的系统)

我们可以自由地控制我们的包命名约定,并将其与通配符相结合。例如:

package { 
  2klic-certificates>=1.0.*: ensure => latest,
}

确保安装1.0部分中的最新软件包。

因此,如果某个节点的版本为1.0.11.0.3可用且版本为1.1.0,则上述内容将确保我们的主版本上安装了1.0.3节点并忽略测试版。

如上所述,这不是一个真正的解决方案,因为您无法始终控制版本的命名约定。它适用于我的初始问题,但如果您想在1.0.11.1.5之间进行操作,例如它本质上是没用的。

在这种情况下,我建议您查看@MattSchuchard发布的片段