Puppet:指定要安装的包的版本
Posted
技术标签:
【中文标题】Puppet:指定要安装的包的版本【英文标题】:Puppet : Specifying a version of a package to install 【发布时间】:2012-07-21 19:11:54 【问题描述】:显然这是不可能的,但我不敢相信我是唯一需要它的人。
我想指定要安装的 php 版本,因为我正在处理一个需要 php 5.2 的旧项目。
实际上我的虚拟机是基于 Oneiric 和 php 5.3
你有什么解决办法吗?
【问题讨论】:
【参考方案1】:您可以指定一个版本:
package 'php' :
ensure => '5.2' ,
但是,如果该版本的 PHP RPM/Deb/package 在您的上游存储库中不可用,那么您需要:
-
查找包含该软件包的备用存储库,并将其添加到您的存储库列表中
使用包设置您自己的存储库
通过提供包的路径从文件系统安装:
package 'php' :
ensure => '5.2' ,
source => '/some/path/to/php-5.2.rpm' ,
【讨论】:
我尝试了更改我的首选项/源列表的解决方案,但我在下载 archive.debian 的公钥时遇到了问题:s @opsmason:版本值需要是字符串吗?你能把它指定为ensure => 5.2
吗?
@greenpool:版本是一个字符串。以 httpd-2.4.29 为例:: 2.4.29 不是浮点数,是字符串!【参考方案2】:
这与我在 puppet 中使用自定义 apt 存储库及其 gpg 密钥的方式非常接近
# put downloaded pgp keys into modulename/files/pgp/
# this will copy them all into /tmp
file '/tmp/pgp-keys':
ensure => directory,
recurse => true,
source => 'puppet:///modules/modulename/pgp',
# add any keys that you need
exec 'apt-key add':
command => '/usr/bin/apt-key add /tmp/pgp-keys/number1.gpg.key &&/
/usr/bin/apt-key add /tmp/pgp-keys/number2.gpg.key',
subscribe => File['/tmp/pgp-keys'],
refreshonly => true,
# make sure you add your custom apt repository
file 'cassandra.sources.list':
ensure => 'present',
path => '/etc/apt/sources.list.d/cassandra.sources.list',
source => 'puppet:///modules/modulename/cassandra.sources.list',
require => Exec['apt-key add'],
# update your package list
exec 'apt-get update':
command => '/usr/bin/apt-get update',
require => File['cassandra.sources.list'],
# Install your specific package - I haven't actually used this yet,
# based on answer by opsmason
package 'cassandra':
ensure => '1.2.0',
require => Exec['apt-get update'],
【讨论】:
以上是关于Puppet:指定要安装的包的版本的主要内容,如果未能解决你的问题,请参考以下文章
通过制作R包的方式安装一些版本错位的包——以Rdonlp2为例子
通过制作R包的方式安装一些版本错位的包——以Rdonlp2为例子