CentOS 7和Puppet无法安装nc

21

我在使用puppet强制安装nc软件包时遇到了奇怪的问题。

最终我通过手动方式安装了它:yum install nc

我发现puppet尝试使用以下命令进行安装:
/usr/bin/yum -d 0 -e 0 -y list nc
返回:Error: No matching Packages to list

我也通过命令行测试过:
yum list nc
返回:Error: No matching Packages to list

然而,当我输入以下命令时:
yum install nc
返回:Package 2:nmap-ncat-6.40-4.el7.x86_64 already installed and latest version

我错过了什么?

3个回答

21

Nc 是指 nmap-ncat 的链接。

在你的 Puppet 中使用 nmap-ncat 会很好,因为 NC 是 nmap-ncat 的虚拟名称。

Puppet 无法理解链接/虚拟名称。

你的 Puppet 应该是:

package {
  'nmap-ncat':
    ensure => installed;
}

1
太好了,这适用于7,但破坏了6.6: 执行'/usr/bin/yum -d 0 -e 0 -y list nmap-ncat' 返回1:错误:没有匹配的包可列出我需要更新我的清单以分割版本,还是有其他选项? - Werner
@Werner -- 这就是我会做的。希望他们不会在未来破坏这个功能。 ;) - Brad Knowles

17
yum install nmap-ncat.x86_64

解决了我的问题


2
yum为我找到了x84_64版本,没有添加后缀fwiw,所以我执行了yum install nmap-ncat - Grant Humphries

3

您可以在这种情况下使用case来区分版本,一个例子是使用FACT操作系统(它返回您的系统的版本等信息...),命令facter将返回详细信息:

root@sytem# facter -p os
{"name"=>"CentOS", "family"=>"RedHat", "release"=>{"major"=>"7", "minor"=>"0", "full"=>"7.0.1406"}}

#we capture release hash
$curr_os = $os['release']

case $curr_os['major'] {
  '7': { .... something }
  *: {something}
}

这只是一个快速的示例,可能存在拼写错误或不完全的工作状态。但是使用系统信息,您可以了解到发生了什么。

操作系统信息提供了三个主要变量:名称、家族、版本...在版本下,您有一个包含更多关于您的操作系统的信息的小词典!结合这些,您可以创建符合您目标的用例。


花了些时间,但我现在明白了。这是对@Werner的评论的回应,他提到@VassilisAretakis的解决方案只适用于某些版本的操作系统,而在其他版本中不起作用。所以他可以根据操作系统版本应用不同的解决方案。好的。 - Jesse Chisholm

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接