【问题标题】:Puppet : Specifying a version of a package to installPuppet:指定要安装的包的版本
【发布时间】:2012-07-21 19:11:54
【问题描述】:

显然这是不可能的,但我不敢相信我是唯一需要它的人。

我想指定要安装的 php 版本,因为我正在处理一个需要 php 5.2 的旧项目。

实际上我的虚拟机是基于 Oneiric 和 php 5.3

你有什么解决办法吗?

【问题讨论】:

    标签: php packages puppet vagrant


    【解决方案1】:

    您可以指定一个版本:

    package { 'php' :
      ensure => '5.2' ,
    }
    

    但是,如果该版本的 PHP RPM/Deb/package 在您的上游存储库中不可用,那么您需要:

    1. 查找包含该软件包的备用存储库,并将其添加到您的存储库列表中
    2. 使用包设置您自己的存储库
    3. 通过提供包的路径从文件系统安装:

      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'],
    }
    

    【讨论】:

      猜你喜欢
      • 2011-07-11
      • 2013-12-21
      • 2014-07-19
      • 2017-05-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-26
      • 2016-09-26
      相关资源
      最近更新 更多