Puppet 安装包大于小于?

Puppet install package greater than & less than?

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

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

但是 2klic-certificates 来自我们也有测试版的自定义存储库。所以我也想设置一个上限。我正在尝试:

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

这个returns错误:

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 我没有看到明确指定最小和最大版本号的选项。这可能吗?

我将保持开放状态,因为这个答案不是一个完整的解决方案,而是一个解决方法 (确认可以在基于 apt 的系统上工作)

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

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

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

所以如果节点有版本 1.0.1 并且 1.0.3 可用并且我们有 1.1.0 的 beta 版本,以上将确保 1.0.3 安装在我们的主要节点并忽略测试版。

如前所述,这不是真正的解决方案,因为您无法始终控制版本的命名约定。它适用于我最初的问题,但如果你想在 1.0.11.1.5 之间,例如它基本上是无用的。


在这种情况下,我建议您查看@MattSchuchard

发布的片段