1

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 の通常の操作方法です)。

4

3 に答える 3

1

資本を使用すると、php_pear経由でインストールされるようです

php_pear 'APC' do
  action :install
end

編集: php_pear を使用すると、大文字のディレクティブを含む ini ファイルが作成され、正しく読み取られないため、最終的にパッケージ経由でインストールする必要がありました。のようなものAPC.shm_sizeは無効です。

私は最終的に次のようなことをしました:

package "php-apc"
template "#{node['php']['ext_conf_dir']}/apc.ini" do
  source "apc.ini.erb"
  owner "root"
  group "root"
  mode "0644"
  variables(:name => "apc", :extensions => ["apc.so"], :directives => {"shm_size" => "256"})
  action action
end

独自の apc.ini.erb テンプレート ファイルを作成しました。

; configuration for php <%= @name %> module
<% @extensions.each do |filepath, zend| -%>
extension=<%= filepath %>
<% end -%>
<% @directives.each do |k,v| -%>
<%= "#{@name}.#{k}=\"#{v}\"" %>
<% end -%>
于 2013-02-12T09:37:52.213 に答える
1

vagrantとchefを使用して、centos 5で同様の問題に遭遇しました。私はいくつかのデバッグコードをphpクックブックに入れ、それがこのコマンドを実行しようとしているのを見ました pecl -d preferred_state=stable search -c pecl.php.net APC'

私が受け取った出力は

Retrieving data...0%.Invalid xml downloaded from "http://pecl.php.net/rest/p/dom_varimport/info.xml": XML Error: 'Invalid character' on line '13'

本当に古いバージョンの php pear を実行していたことが判明しました。次のコマンドを実行して修正しました

pear upgrade -f PEAR
于 2014-09-24T21:06:18.860 に答える
0

私の環境では以下の修正で解決しました。試してみましたか?

OS: Ubuntu 12.04.1 LTS

シェフソロ: 10.16.6

成功: php_pear "APC" do

問題: php_pear "apc" do

php レシピは大文字小文字を無視していないようです。

しかし、構成オプションが正しくないという別の問題があります。最初のオプションには「-e」が割り当てられます。(ubuntuのみで発生します。centos6では発生しません。)

chef-solo(log_level :debug)
running: /tmp/pear/temp/APC/configure --enable-apc-debug=-e --enable-apc-filehits=no --enable-apc-spinlocks=no --enable-apc-memprotect=no --enable-apc-pthreadmutex=no --enable-apc-pthreadrwlocks=yes

pecl install apc
running: /tmp/pear/temp/APC/configure --enable-apc-debug=no --enable-apc-filehits=no --enable-apc-spinlocks=no --enable-apc-memprotect=no --enable-apc-pthreadmutex=no --enable-apc-pthreadrwlocks=yes
于 2013-01-12T05:48:42.747 に答える