如何在运行带有 PHP 的 Ubuntu 的 vagrant box 上安装 APC?

如何在运行带有 PHP 的 Ubuntu 的 vagrant box 上安装 APC?

在我的“Vagrant”文件中,有以下一行:

chef.add_recipe("php::module_apc")

但它给了我这个错误:

[2013-01-11T22:14:53+00:00] INFO: Processing package[php-apc] action install (php::module_apc line 34)
================================================================================
Error executing action `install` on resource 'package[php-apc]'
================================================================================
Chef::Exceptions::Exec
----------------------
apt-get -q -y install php-apc=3.1.7-1 returned 100, expected 0

Resource Declaration:
---------------------
# In /tmp/vagrant-chef-1/chef-solo-1/cookbooks/php/recipes/module_apc.rb

 33: when "debian"
 34:   package "php-apc" do
 35:     action :install
 36:   end
 37: end

Compiled Resource:
------------------
# Declared in /tmp/vagrant-chef-1/chef-solo-1/cookbooks/php/recipes/module_apc.rb:34:in `from_file'

package("php-apc") do
  retry_delay 2
  retries 0
  recipe_name "module_apc"
  action [:install]
  cookbook_name :php
  package_name "php-apc"
end
[2013-01-11T22:14:53+00:00] ERROR: Running exception handlers
[2013-01-11T22:14:53+00:00] ERROR: Exception handlers complete
[2013-01-11T22:14:53+00:00] FATAL: Stacktrace dumped to /tmp/vagrant-chef-1/chef-stacktrace.out
[2013-01-11T22:14:53+00:00] FATAL: Chef::Exceptions::Exec: package[php-apc] (php::module_apc line 34) had an error: Chef::Exceptions::Exec: apt-get -q -y install php-apc=3.1.7-1 returned 100, expected 0
Chef never successfully completed! Any errors should be visible in the output above. Please fix your recipes so that they properly complete.

我之前也运行过这个:

chef.add_recipe("apt")

但这也没什么帮助。

有什么办法可以解决这个问题吗?非常感谢!

顺便说一句,我正在使用 OpsCode 的所有手册: https://github.com/opscode-cookbooks/

答案1

我刚刚进行了以下测试:

Vagrantfile 运行列表:

chef.run_list = [
  "recipe[apt]",
  "recipe[php::module_apc]"
]

使用 Ubuntu 12.04、Chef 10.14.2 和以下食谱版本:

  • apt(1.4.8)
  • php (1.1.0)
  • build-essential(1.3.2)(依赖)
  • xml (1.0.4) (依赖)
  • mysql (2.1.0) (依赖)
  • openssl (1.0.0) (依赖)

它完全贯穿始终,并最终达到以下效果:

vagrant@apctest:~$ dpkg -l | grep php
ii  php-apc                         3.1.7-1                    APC (Alternative PHP Cache) module for PHP 5
ii  php5-common                     5.3.10-1ubuntu3.4          Common files for packages built from the php5 source
ii  php5-fpm                        5.3.10-1ubuntu3.4          server-side, HTML-embedded scripting language (FPM-CGI binary)

所以:

我建议使用最新发布的食谱社区网站而不是来自 GitHub 的源代码 - 发布的版本与正在不断开发的存储库相比是“稳定的”。

答案2

我可能错了,但该错误似乎与版本不匹配无关。

登录到盒子并运行sudo apt-get update。注销并查看是否可以配置vagrant provision。有时更新无法正确完成,只需重新运行即可。

如果这不起作用,请登录并尝试sudo apt-get install php-apc=3.1.7-1查看 apt 中的错误是什么。

答案3

APC 已作为标准模块集成到 PHP-5.4+ 软件包中,无需像 PHP-5.3 及更早版本那样作为单独的软件包进行安装。因此,当您尝试安装系统中已存在的模块时,会抛出错误。

相关内容