hypermkt blog

Chefでソースコードからパッケージをインストールする方法

January 11, 2014

Chef Logo

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を使えば指定のコマンドを順番に実行させることができるようにはなるのですが、環境に依存する可能性があるので極力使わないほうが良い気がしますね。


都内で働くWebアプリケーションエンジニア。主にサーバーサイド。最近はRuby/Railsでコードを書くのが楽しい。