我的cap production deploy
在Ubuntu 12.04盒子上的nokogiri安装失败:
DEBUG [6f355ce8] Extracting libxml2-2.8.0.tar.gz into tmp//ports/libxml2/2.8.0... OK
DEBUG [6f355ce8] Running 'configure' for libxml2 2.8.0... ERROR, review 'tmp//ports/libxml2/2.8.0/configure.log' to see what happened.
DEBUG [6f355ce8] *** extconf.rb failed ***
DEBUG [6f355ce8] Make sure that `gem install nokogiri -v '1.6.1'` succeeds before bundling.
我查看了上述日志,其中提到找不到C编译器。我试着在nokogiri网站上安装ubuntu的依赖项,系统说它们已经安装好了。
我还在服务器上尝试了gem install nokogiri -v '1.6.1'
,它成功了,没有出现任何问题,gem list
显示它安装在服务器上。
我发现了一个类似的问题,建议将这条线添加到生产中。rb
set :bundle_env_variables, { 'NOKOGIRI_USE_SYSTEM_LIBRARIES' => 1 }
将错误更改为更具体的错误:
DEBUG [1e93b004] /usr/local/rbenv/versions/2.0.0-p247/lib/ruby/2.0.0/mkmf.rb:430:in `try_do': The compiler failed to generate an executable file. (RuntimeError)
DEBUG [1e93b004] You have to install development tools first.
但试图通过安装它们
sudo apt-get install libxslt-dev libxml2-dev
说所有的东西都已经安装好了——再说一遍,nokogiri在deploy
任务之外安装得很好。
我缺少ubuntu的一个ruby-dev依赖项:http://nokogiri.org/tutorials/installing_nokogiri.html
此外,由于某种原因,该服务器只授予root
访问一些nokogiri依赖项的权限,我不得不为我的部署用户授予chmod
权限。