0

我正在尝试做初步工作,让我们的开发商店在开发过程中开始使用 vagrant + puppet。在我的 puppet manifest 开发的这个阶段,我需要安装几个 RPM,这些 RPM 可以通过具有非常特定标志('--nodeps')的内部 http 服务器(不是 repo)获得。

因此,这是我需要安装的示例:

http://1.2.3.4/bar/package1.rpm
http://1.2.3.4/bar/package2.rpm
http://1.2.3.4/bar/package3.rpm

我通常会以这种方式安装它们:

rpm --install --nodeps ${rpm_uri}

我希望能够做这样的事情

$custom_rpms = [
    'http://1.2.3.4/bar/package1.rpm',
    'http://1.2.3.4/bar/package2.rpm',
    'http://1.2.3.4/bar/package3.rpm',
]

# edit:  just realized I was instantiating the parameterized
#        class wrong.  :) 
class { 'custom_package': package_file => $custom_rpms }

有了这个模块

# modules/company_packages/manifests/init.pp
define company_package($package_file) {
    exec { "/bin/rpm  --install --nodeps ${package_file} --nodeps" }
}

但是,我不确定这是否正确。你们中的一些木偶大师(不是双关语)可以教我如何做到这一点吗?

4

2 回答 2

3

您现在可能已经解决了这个问题,但如果没有。

使用存储库是首选方法,因为它会自动解析所有依赖项,但它不可用,您可以尝试以下方法。(我以 epel 为例 rpm)

package {"epel-release":
  provider=>rpm,
  ensure=>installed,
  install_options => ['--nodeps'],
  source=>"http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm",
}

过去,“install_options”仅在 Windows 中受支持。看来它现在在 linux 中得到了支持。如果有有用的序列,请将“require=Package["package3.rpm"]”添加到序列中。

于 2013-11-15T18:12:02.750 回答
0

由 Randm 通过 irc.freenode.net#puppet 回答

创建或使用现有的 repo 并使用 yum 安装它们,以便它为您解决依赖关系。

于 2013-10-09T17:43:56.153 回答