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

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

シェアする

  • このエントリーをはてなブックマークに追加

フォローする