我正在尝试做最初的工作,让我们的开发商店在开发过程中开始使用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" }
}
但是,我不确定这是否正确。你们中的一些木偶大师(没有双关语)可以告诉我应该如何做到这一点吗?
答案 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安装它们,以便它为您解析依赖项。