4

我为 vagrant 制作了一个安装 phpunit 的配方,但是当我使用 vagrant halt 然后 vagrant up 时它一直失败。

execute "discover phpunit" do
  command "pear channel-discover pear.phpunit.de"
  action :run
end

execute "config phpunit" do
  command "pear config-set auto_discover 1"
  action :run
end

execute "install phpunit" do
  command "pear install pear.phpunit.de/PHPUnit"
  action :run
end

我得到:

[default] [Thu, 29 Mar 2012 14:39:57 -0700] ERROR: execute[discover phpunit] (phpunit::default line 39) has had an error
[Thu, 29 Mar 2012 14:39:57 -0700] ERROR: execute[discover phpunit] (/tmp/vagrant-chef-1/chef-solo-1/phpunit/recipes/default.rb:39:in `from_file') had an error:
execute[discover phpunit] (phpunit::default line 39) had an error: Chef::Exceptions::ShellCommandFailed: Expected process to exit with [0], but received '1'
---- Begin output of pear channel-discover pear.phpunit.de ----
STDOUT: Channel "pear.phpunit.de" is already initialized
4

2 回答 2

4

看起来正在发生的事情是每次vagrant up执行时都会运行此脚本。

你可能想要这样的东西:

execute "discover phpunit" do
  command "pear channel-discover pear.phpunit.de"
  action :run
  not_if "which phpunit"
end

只要确保phpunit在你身上$PATH

于 2012-03-29T21:54:14.297 回答
0

我可能会将 not_if 设置为

not_if { File.exists?('/path/to/phpunit')

而不是依赖它在 $PATH 中找到。

于 2013-06-18T20:11:07.007 回答