Php Puppet:指定要安装的包的版本

Php Puppet:指定要安装的包的版本,php,packages,puppet,vagrant,Php,Packages,Puppet,Vagrant,显然这是不可能的,但我不敢相信我是唯一需要它的人 我想指定要安装的php版本,因为我正在处理一个需要PHP5.2的旧项目 实际上,我的虚拟机是基于Oneiric和PHP5.3的 您有解决方案吗?您可以指定一个版本: package { 'php' : ensure => '5.2' , } 但是,如果您的上游回购协议中没有该版本的PHP RPM/Deb/package,那么您需要: 找到具有该包的备用回购,并将其添加到您的回购列表中 使用该软件包建立您自己的回购协议 通过提供包的路径

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

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

实际上,我的虚拟机是基于Oneiric和PHP5.3的


您有解决方案吗?

您可以指定一个版本:

package { 'php' :
  ensure => '5.2' ,
}
但是,如果您的上游回购协议中没有该版本的PHP RPM/Deb/package,那么您需要:

  • 找到具有该包的备用回购,并将其添加到您的回购列表中
  • 使用该软件包建立您自己的回购协议
  • 通过提供包的路径,从文件系统安装:

    package { 'php' :
      ensure => '5.2' ,
      source => '/some/path/to/php-5.2.rpm' ,
    }
    

  • 这与我在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'],
    }
    

    我尝试了更改首选项/源列表的解决方案,但在下载archive.debian的公钥时遇到问题:s@opsmason:版本值是否需要为字符串?能否将其指定为
    sure=>5.2
    ?@greenpool:版本是一个字符串。以httpd-2.4.29为例::2.4.29不是浮点,而是字符串!