2012-07-23 121 views
27

顯然這是不可能的,但我無法相信我是唯一需要它的人。木偶:指定要安裝的軟件包版本

我想指定要安裝的PHP版本,因爲我正在處理一個需要php 5.2的舊項目。

其實我的VM是基於解夢用PHP 5.3

你有什麼解決辦法做到這一點?

回答

45

您可以指定一個版本:

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

然而,如果PHP RPM /德布/包的這個版本是在上游回購不可用,那麼你會想要麼:

  1. 查找有包的備用回購,並將其添加到您的回購列表
  2. 設置自己的回購與包
  3. 從你的文件系統安裝,由provid荷蘭國際集團的路徑,該包:

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

我試過的解決方案來改變我的偏好/源列表,但遇到下載archive.debian公鑰的問題:s – JulienD 2012-07-24 09:40:35

+0

@opsmason:版本值是否需要字符串?你能指定它爲'ensure => 5.2'嗎? – greenpool 2015-02-08 02:31:32

+0

@greenpool:版本是一個字符串。以httpd-2.4.29爲例:: 2.4.29不是浮點數,它是一個字符串! – opsmason 2017-12-13 14:52:25

7

這是非常接近我如何在木偶使用自定義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'], 
}