Chefでソースコードからパッケージをインストールする方法
January 11, 2014
yumでインストールできるものは package resourceで簡単にインストールできるのですが、稀にソースコードをmake installしてインストールしたいパッケージもあります。
その場合は bash resourceを使うことで対応可能です。下記のように記述することで、mod_fcgidのパッケージをダウンロードしてから解凍し、make&make installが実行可能となります。
bash “install mod_fcgid” do user “root” cwd “/usr/local/src” not_if { File.exists?(“/usr/lib64/httpd/modules/mod_fcgid.so”) } code <<-EOH wget http://ftp.meisei-u.ac.jp/mirror/apache/dist//httpd/mod_fcgid/mod_fcgid-2.3.9.tar.gz tar zxvf mod_fcgid-2.3.6.tar.gz cd mod_fcgid-2.3.6 ./configure.apxs make make install EOH end
bash resourceを使ってパッケージをインストールする際に気をつけなくてはいけないのはpackage resourceと違って、インストール済みかどうかの判別を自分で記述する必要があります。今回の例ではnot_ifを使って、/usr/lib64/httpd/modules/mod_fcgid.soファイルが存在しなければインストールするという制御にしています。
not_if { File.exists?(“/usr/lib64/httpd/modules/mod_fcgid.so”) }
上記のとおりbash resourceを使えば指定のコマンドを順番に実行させることができるようにはなるのですが、環境に依存する可能性があるので極力使わないほうが良い気がしますね。