如何在Puppet中检查已安装的包?

如何在Puppet中检查已安装的包?,puppet,rpm,Puppet,Rpm,我正在使用wget下载RPM,我想在下载之前检查包是否已安装。我没有使用RPM回购,所以我不能这么做 package { ... ensure => installed } 我怎样才能做到: if HOW_TO_CHECK_IF_PACKAGE_X_IS_INSTALLED ... do wget etc. 在有人问我之前,这对我不起作用:如果你正在下载RPM并安装它,你可以这样做: package { 'foo': ensure => installed,

我正在使用wget下载RPM,我想在下载之前检查包是否已安装。我没有使用RPM回购,所以我不能这么做

package { ...
  ensure => installed
}
我怎样才能做到:

if HOW_TO_CHECK_IF_PACKAGE_X_IS_INSTALLED
   ... do wget etc.

在有人问我之前,这对我不起作用:

如果你正在下载RPM并安装它,你可以这样做:

package { 'foo':
  ensure   => installed,
  provider => 'rpm',
  source   => 'http://example.com/foo.rpm',
}

如果您正在下载RPM并安装它,您可以这样做:

package { 'foo':
  ensure   => installed,
  provider => 'rpm',
  source   => 'http://example.com/foo.rpm',
}

如果您正在下载RPM并安装它,您可以这样做:

package { 'foo':
  ensure   => installed,
  provider => 'rpm',
  source   => 'http://example.com/foo.rpm',
}

如果您正在下载RPM并安装它,您可以这样做:

package { 'foo':
  ensure   => installed,
  provider => 'rpm',
  source   => 'http://example.com/foo.rpm',
}

该解决方案是一种定制因素:

require"puppet"
module Puppet::Parser::Functions
  newfunction(:package_installed, :type => :rvalue) do |args|
    packageName = args[0]
    return system "rpm --quiet -q #{packageName}"
  end
end

该解决方案是一种定制因素:

require"puppet"
module Puppet::Parser::Functions
  newfunction(:package_installed, :type => :rvalue) do |args|
    packageName = args[0]
    return system "rpm --quiet -q #{packageName}"
  end
end

该解决方案是一种定制因素:

require"puppet"
module Puppet::Parser::Functions
  newfunction(:package_installed, :type => :rvalue) do |args|
    packageName = args[0]
    return system "rpm --quiet -q #{packageName}"
  end
end

该解决方案是一种定制因素:

require"puppet"
module Puppet::Parser::Functions
  newfunction(:package_installed, :type => :rvalue) do |args|
    packageName = args[0]
    return system "rpm --quiet -q #{packageName}"
  end
end


我以前使用自定义事实来检查文件是否存在,所以我觉得我也需要自定义事实,我只是不知道如何编写。是的,但挑剔:这些都称为事实。该工具本身命名为Facter,但每个项目都被称为事实。我以前使用自定义Facter来检查文件是否存在,因此我觉得我也需要自定义Facter来完成这项工作。我只是不知道如何编写。是的,但吹毛求疵:这些被称为事实。该工具本身命名为Facter,但每个项目都被称为事实。我以前使用自定义Facter来检查文件是否存在,因此我觉得我也需要自定义Facter来完成这项工作。我只是不知道如何编写。是的,但吹毛求疵:这些被称为事实。该工具本身命名为Facter,但每个项目都被称为事实。我以前使用自定义Facter来检查文件是否存在,因此我觉得我也需要自定义Facter来完成这项工作。我只是不知道如何编写。是的,但吹毛求疵:这些被称为事实。工具本身被命名为Facter,但每个项目都被称为事实。我最终发现了它,我需要一个自定义事实:好的,我只是好奇:当使用自定义事实可以实现完全相同的结果而不需要调用Facter的额外工作时,它有什么好处?我最终发现了它,我需要一个自定义事实:好的,我只是好奇:使用自定义事实有什么好处?如果不需要额外的工作,就可以得到完全相同的结果?我终于明白了,我需要一个自定义事实:好的,我只是好奇:使用自定义事实有什么好处?如果不需要额外的工作,就可以得到完全相同的结果?我终于明白了,我需要一个自定义事实:好的,我只是好奇:使用自定义事实有什么好处?如果不需要额外的工作,就可以得到完全相同的结果?伙计,这不是自定义事实。它是一个在主机上运行的解析器函数,查询安装在主机上的包。如果您使用的是
puppet apply
,这恰好有效,但实际上并不是一个解决方案。事实上,如果您想要一个事实来获取软件包安装状态,您应该执行类似于我刚才所做的编辑的操作。这不是一个自定义事实。它是一个在主机上运行的解析器函数,查询安装在主机上的包。如果您使用的是
puppet apply
,这恰好有效,但实际上并不是一个解决方案。事实上,如果您想要一个事实来获取软件包安装状态,您应该执行类似于我刚才所做的编辑的操作。这不是一个自定义事实。它是一个在主机上运行的解析器函数,查询安装在主机上的包。如果您使用的是
puppet apply
,这恰好有效,但实际上并不是一个解决方案。事实上,如果您想要一个事实来获取软件包安装状态,您应该执行类似于我刚才所做的编辑的操作。这不是一个自定义事实。它是一个在主机上运行的解析器函数,查询安装在主机上的包。如果您使用的是
puppet apply
,这恰好有效,但实际上并不是一个解决方案。事实上,如果您希望了解软件包安装状态,您应该执行类似于我刚才所做的编辑的操作