2012-07-23 18 views
27

Rõ ràng điều này là không thể, nhưng tôi không thể tin rằng tôi là người duy nhất cần nó.Rối rối: Chỉ định phiên bản của một gói để cài đặt

Tôi muốn chỉ định phiên bản php cần cài đặt vì tôi đang làm việc trên một dự án cũ yêu cầu php 5.2.

Thực ra máy ảo của tôi dựa trên Oneiric với php 5.3

Bạn có giải pháp nào để thực hiện việc này không?

Trả lời

45

Bạn có thể chỉ định một phiên bản:

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

Tuy nhiên, nếu đó là phiên bản của PHP RPM/Deb/gói không có sẵn trong repo ngược dòng của bạn, sau đó bạn sẽ muốn một trong hai:

  1. Tìm một repo thay thế mà có gói phần mềm đó, và thêm nó vào danh sách repo của bạn
  2. Thiết lập repo của riêng bạn với các gói
  3. Cài đặt từ hệ thống tập tin của bạn, bằng provid ing một đường dẫn đến gói:

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

Tôi đã thử các giải pháp để thay đổi sở thích của tôi/nguồn nhưng tôi gặp phải sự cố khi tải xuống khóa công khai của archive.debian: s – JulienD

+0

@opsmason: Giá trị phiên bản có cần phải là chuỗi không? bạn có thể chỉ định nó là 'Ensure => 5.2' không? – greenpool

+0

@greenpool: phiên bản là một chuỗi. Lấy httpd-2.4.29 làm ví dụ :: 2.4.29 không phải là một phao, đó là một chuỗi! – opsmason

7

này là khá gần với cách tôi sử dụng kho tùy chỉnh apt trong rối với các phím gpg họ

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