結論
パッケージがインストール済みかのチェックに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