結論
パッケージがインストール済みかのチェックにnot_ifアトリビュートを使います。
package 'http://dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpm' do
not_if 'rpm -q mysql-community-release-el6-5'
end
package 'mysql-community-server'
package 'mysql-community-devel'
解決した問題
package 'http://dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpm'
では、インストール済みの判定に失敗します。
一度目の実行は成功します。
しかし、二回目以降の実行でエラーが出ます。
エラー内容
エラー時の実行メッセージを見ると
rpm -q http://dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpm
が実行されています。本来は、以下を実行して欲しいです。
rpm -q mysql-community-release-el6-5
packageリソースの実装
itamaeで使うpackageリソースはspecinfraというライブラリによって提供されています。
cmd = "rpm -q #{escape(package)}"
です。引数にurlを指定しているかは特に考慮していません。
対処方法
itamaeではリソースにアトリビュートを指定することができます。
ここではnot_ifアトリビュートを使います。
'rpm -q mysql-community-release-el6-5'が失敗した時だけ、インストールするように、以下の指定を行います。
package 'http://dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpm' do
not_if 'rpm -q mysql-community-release-el6-5'
end