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.1
和 1.1.5
之间,例如它基本上是无用的。
在这种情况下,我建议您查看@MattSchuchard
发布的片段
如果我有以下内容就可以正常工作:
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.1
和 1.1.5
之间,例如它基本上是无用的。
在这种情况下,我建议您查看@MattSchuchard
发布的片段