Gem安装在共享VirtualBox文件夹上失败

时间:2014-03-13 14:16:27

标签: bundle virtualbox

有一个使用VirtualBox的Windows主机和一个Ubuntu来宾。

我们可以在Ubuntu上为各个宝石安装gem。运行时

bundle install --path vendor

对于Ubuntu中共享文件夹上的应用程序,它失败了。

Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

    /usr/local/rvm/rubies/ruby-2.1.1/bin/ruby extconf.rb 
/var/www/chef-playground/vendor/ruby/2.1.0/gems/mini_portile-0.5.2/lib/mini_portile.rb:226: warning: Insecure world writable dir /opt/chef/embedded/bin in PATH, mode 040777
Extracting libxml2-2.8.0.tar.gz into tmp/x86_64-linux-gnu/ports/libxml2/2.8.0... OK
Running 'configure' for libxml2 2.8.0... OK
Running 'compile' for libxml2 2.8.0... OK
Running 'install' for libxml2 2.8.0... OK
Activating libxml2 2.8.0 (from /var/www/chef-playground/vendor/ruby/2.1.0/gems/nokogiri-1.6.1/ports/x86_64-linux-gnu/libxml2/2.8.0)...
Extracting libxslt-1.1.26.tar.gz into tmp/x86_64-linux-gnu/ports/libxslt/1.1.26... OK
Running 'configure' for libxslt 1.1.26... OK
Running 'compile' for libxslt 1.1.26... OK
Running 'install' for libxslt 1.1.26... OK
Activating libxslt 1.1.26 (from /var/www/chef-playground/vendor/ruby/2.1.0/gems/nokogiri-1.6.1/ports/x86_64-linux-gnu/libxslt/1.1.26)...
checking for libxml/parser.h... yes
checking for libxslt/xslt.h... yes
checking for libexslt/exslt.h... yes
checking for iconv_open() in iconv.h... yes
checking for xmlParseDoc() in -lxml2... yes
checking for xsltParseStylesheetDoc() in -lxslt... yes
checking for exsltFuncRegister() in -lexslt... yes
checking for xmlHasFeature()... yes
checking for xmlFirstElementChild()... yes
checking for xmlRelaxNGSetParserStructuredErrors()... yes
checking for xmlRelaxNGSetParserStructuredErrors()... yes
checking for xmlRelaxNGSetValidStructuredErrors()... yes
checking for xmlSchemaSetValidStructuredErrors()... yes
checking for xmlSchemaSetParserStructuredErrors()... yes
creating Makefile

Text file busy @ unlink_internal - ./siteconf20140313-27134-167s4eq.rb

Gem files will remain installed in /var/www/chef-playground/vendor/ruby/2.1.0/gems/nokogiri-1.6.1 for inspection.
Results logged to /var/www/chef-playground/vendor/ruby/2.1.0/extensions/x86_64-linux/2.1.0/nokogiri-1.6.1/gem_make.out
An error occurred while installing nokogiri (1.6.1), and Bundler cannot continue.
Make sure that `gem install nokogiri -v '1.6.1'` succeeds before bundling

2 个答案:

答案 0 :(得分:0)

堆栈跟踪的最后一行有解释。

An error occurred while installing nokogiri (1.6.1), and Bundler cannot continue.
Make sure that `gem install nokogiri -v '1.6.1'` succeeds before bundling

我在Fedora 20上使用它时遇到了同样的错误。如何在nokogiri网站上克服它有一个很好的解释。

我运行了以下2个命令,然后bundle install运行了:

sudo yum install -y rubygem-nokogiri
sudo yum install -y gcc ruby-devel libxml2 libxml2-devel libxslt libxslt-devel

答案 1 :(得分:0)

可能是因为:

Text file busy @ unlink_internal - ./siteconf20140313-27134-167s4eq.rb

这显然是共享文件夹,Virtualbox和Windows主机存在的问题。他们似乎一直在指责Window咄咄逼人的文件处理。

https://github.com/mitchellh/vagrant/issues/2282

Ansible text file busy error

https://unix.stackexchange.com/questions/52951/gedit-wont-save-a-file-on-a-virtualbox-share-text-file-busy

您可以尝试通过在来宾计算机上的某个位置而不是在共享文件夹中安装宝石来解决此问题,即在您的主目录中安装您的宝石:bundle install --path ~/vendor。您可能需要重新配置.bundle/config以确保您指向正确的目录。