2016-07-12 11 views
5

Wenn ich versuche, Multiples Pakete mit einem Platzhalter zu installieren Namensgebung ich folgende Fehlermeldung bekam:Installation Multiples Pakete mit Koch

* yum_package[mysql-server] action install (up to date) 
* yum_package[mysql*] action install 
* No candidate version available for mysql* 
    ============================================================================                      ==== 
    Error executing action `install` on resource 'yum_package[mysql*]' 
    ============================================================================                      ==== 

Rezept-Code ist:

package 'mysql-server' do 
    action :install 
end 

package 'mysql*' do 
    action :install 
end 

Antwort

12

Sie haben die genaue Paket verwenden Name. Der Koch package Ressource macht keine Magie, um passende Pakete zu finden.

Der Name der Ressource (das Teil kurz nach Paket) als Paketnamen und gegeben das zugrunde liegende System (yum auf RH ähnlichen Systemen, apt auf debian wie Systeme)

Wenn Sie Multiples verwendet Pakete installieren und eine gemeinsame Konfiguration Sie Schleife über sie in Ihrem Rezept kann statt:

['mysql-server','mysql-common','mysql-client'].each do |p| 
    package p do 
    action :install 
    end 
end 

Die Array-Erstellung mit einigen ruby-Syntax vereinfacht werden könnte, als die Worte %w erbauer:

%w(mysql-server mysql-common mysql-client).each [...] 

Seit Koch 12.1 die package Ressource akzeptieren eine array of packages direkt wie folgt aus:

package %w(mysql-server mysql-common mysql-client) 
-1

Dieser Koch Fälle mit aufgelöst werden kann. Bitte siehe unten

Folgendes Ihre Attribute hinzufügen Datei:

packages = [] 

case node[:platform_family] 
when 'rhel' #based on your OS 
    packages = [ 
    "package1", 
    "package2", 
    "package3", 
    "package4", 
    "package5", 
    "package6", 
    "package7" ## Last line without comma 
    ] 
end 

default[:cookbookname][:packages] = packages 

Dann fügen Sie das folgende in der Rezeptdatei (Rezepte/default.rb):

node[:cookbookname][:packages].each do |pkg| 
    package pkg do 
    action :install 
    retries 3 
    retry_delay 5 
    end 
end 
+0

Das Paket Ressource akzeptieren ein Array von Paketen für eine Weile jetzt, gibt es keinen Grund, es noch einmal zu durchlaufen. – Tensibai