2012-07-23 5 views
27

Scheinbar ist das nicht möglich, aber ich kann nicht glauben, dass ich der Einzige bin, der es braucht.Puppet: Angabe einer Version eines zu installierenden Pakets

Ich möchte die Version von PHP angeben, um zu installieren, weil ich an einem alten Projekt arbeite, das php 5.2 erfordert.

Eigentlich ist mein VM auf Oneiric Basis mit PHP 5.3

Haben Sie eine Lösung, dies zu tun?

Antwort

45

Sie eine Version angeben:

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

Wenn jedoch die Version von PHP RPM/Deb/Paket in Ihrem Upstream-Repo nicht verfügbar ist, dann werden Sie wollen entweder:

  1. finden eine alternative Repo, die dieses Paket hat, und fügen sie die Liste Ihrer Repo
  2. Ihre eigene Repo mit dem Paket
  3. aus Ihrem Dateisystem installieren einrichten, von provid ing einen Pfad zu dem Paket:

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

ich die Lösung versucht, meine Präferenz/Quelle zu ändern Liste, aber ich habe Probleme mit dem Herunterladen des öffentlichen Schlüssels von archive.debian: s – JulienD

+0

@opsmason: Muss der Versionswert Zeichenfolge sein? Kannst du es als 'ensure => 5.2' angeben? – greenpool

+0

@greenpool: Die Version ist eine Zeichenfolge. Nehmen Sie httpd-2.4.29 als Beispiel :: 2.4.29 ist kein float, es ist eine Zeichenfolge! – opsmason

7

Dies zu ziemlich nahe ist, wie ich verwende, um benutzerdefinierte apt-Repositories in Puppe mit ihrer 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'], 
} 
Verwandte Themen