Vagrant と Chef Solo に関するいくつかのチュートリアルとガイドに従いましたが、Chef Solo を使用して Precise64 VM をプロビジョニングするときに問題が発生しています。PHP5.3 と PECL と PEAR をインストールした後、レシピは APC をインストールする必要がありますが、APC は PECL で利用可能ですが、パッケージを見つけることができません。これが私が受け取るメッセージです。
RuntimeError
------------
Package apc not found in either PEAR or PECL.
Cookbook Trace:
---------------
/tmp/vagrant-chef-1/chef-solo-1/cookbooks/php/providers/pear.rb:259:in `pecl?'
/tmp/vagrant-chef-1/chef-solo-1/cookbooks/php/providers/pear.rb:107:in `load_current_resource'
Resource Declaration:
---------------------
# In /tmp/vagrant-chef-1/chef-solo-1/cookbooks/web-app/recipes/webserver.rb
17: package "libpcre3-dev"
18: php_pear "apc" do
19: action :install
20: end
21:
最初は PECL と PEAR が最新ではないと思っていましたが、以下を使用して事前に更新されています。
# update the main channels
php_pear_channel 'pear.php.net' do
action :update
end
php_pear_channel 'pecl.php.net' do
action :update
end
編集:vagrant ssh
私のボックスに入って実行sudo pecl install apc
すると、パッケージがうまく解決されたようです。レシピで何かが間違っています。上記の方法を Debian Squeeze 64 および Ubuntu Server Precise 64 FYI で試しました
EDIT2 : Precise32 と新しい Vagrantfile とレシピを使用して新しいボックスをセットアップしましたknife
が、同じエラーが発生します。PECL を使用して XDebug をインストールしようとしましたが、非常に無意味なエラーが発生します。
設定とエラー メッセージを含む Gist を作成しました。私が見る限り、 -recipeのphp_pear
プロバイダーは壊れています。php
Gist はこちらで確認できます: https://gist.github.com/4492004
それは私を完全に狂わせています...最も単純なことはChef-soloでは機能せず、オンラインで最も基本的なチュートリアルに従うと、あらゆる種類のエラーが発生します. それは腹立たしいです。
EDIT3 https://github.com/opscode-cookbooks/phpにアクセス
すると、レシピphp::module_apc
が廃止され、PEAR/PECL またはパッケージのインストールが優れていることがわかります。彼らがレシピをどのように実装したのか疑問に思っていたphp::module_apc
ところ、これを見つけました (https://github.com/opscode-cookbooks/php/blob/master/recipes/module_apc.rb):
case node['platform_family']
when "rhel", "fedora"
%w{ httpd-devel pcre pcre-devel }.each do |pkg|
package pkg do
action :install
end
end
php_pear "apc" do
action :install
directives(:shm_size => "128M", :enable_cli => 0)
end
when "debian"
package "php-apc" do
action :install
end
end
php_pear
したがって、Debian/Ubuntu を使用しているときにコマンドを使用すると、明らかに何かが間違っていますが、どこにも文書化されていません。PEAR/PECL が PHP アドオンをインストールする最も標準的な方法であることを見て、私はそれを機能させることに焦点を当てていましたが、これを見て、コマンドの使用を参照する必要があると思いますpackage
。Opscode の人々に、Debian を例外とする理由を尋ねます。
最終章
大成功!コマンドを使用するpackage
と、簡単でした。ただし、PECL/PEAR を使用したパッケージのインストールは、Chef を使用する Debian では問題があるようです。したがって、問題は残り、回避策が見つかります (Github のドキュメントでは別の方法が提案されていますが、これは実際には Debian の通常の操作方法です)。