使用自定义安装标志安装多个RPM

时间:2013-10-09 16:24:06

标签: puppet

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

所以,这是我需要安装的一个例子:

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" }
}

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

2 个答案:

答案 0 :(得分: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“],”to sequence。

答案 1 :(得分:0)

Randm回答irc.freenode.net#puppet

  

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