irb没有明显的理由建立nokogiri

时间:2014-05-26 15:02:36

标签: ruby nokogiri irb

我在Ubuntu 14.04中使用ruby 1.9.3p484(2013-11-22修订版43786)[x86_64-linux]

我输入irb然后我突然得到以下内容

/usr/lib/ruby/1.9.1/fileutils.rb:247:in `mkdir': Permission denied - /var/lib/gems/1.9.1/extensions/x86_64-linux/1.9.1/nokogiri-1.6.2.1 (Errno::EACCES)
from /usr/lib/ruby/1.9.1/fileutils.rb:247:in `fu_mkdir'
    from /usr/lib/ruby/1.9.1/fileutils.rb:221:in `block (2 levels) in mkdir_p'
    from /usr/lib/ruby/1.9.1/fileutils.rb:219:in `reverse_each'
    from /usr/lib/ruby/1.9.1/fileutils.rb:219:in `block in mkdir_p'
    from /usr/lib/ruby/1.9.1/fileutils.rb:205:in `each'
    from /usr/lib/ruby/1.9.1/fileutils.rb:205:in `mkdir_p'
    from /usr/local/lib/site_ruby/1.9.1/rubygems/ext/builder.rb:210:in `write_gem_make_out'
    from /usr/local/lib/site_ruby/1.9.1/rubygems/ext/builder.rb:132:in `build_error'
    from /usr/local/lib/site_ruby/1.9.1/rubygems/ext/builder.rb:171:in `rescue in build_extension'
    from /usr/local/lib/site_ruby/1.9.1/rubygems/ext/builder.rb:156:in `build_extension'
    from /usr/local/lib/site_ruby/1.9.1/rubygems/ext/builder.rb:198:in `block in build_extensions'
    from /usr/local/lib/site_ruby/1.9.1/rubygems/ext/builder.rb:195:in `each'
    from /usr/local/lib/site_ruby/1.9.1/rubygems/ext/builder.rb:195:in `build_extensions'
    from /usr/local/lib/site_ruby/1.9.1/rubygems/specification.rb:1436:in `block in build_extensions'
    from /usr/local/lib/site_ruby/1.9.1/rubygems/user_interaction.rb:45:in `use_ui'
    from /usr/local/lib/site_ruby/1.9.1/rubygems/specification.rb:1434:in `build_extensions'
    from /usr/local/lib/site_ruby/1.9.1/rubygems/stub_specification.rb:60:in `build_extensions'
    from /usr/local/lib/site_ruby/1.9.1/rubygems/basic_specification.rb:56:in `contains_requirable_file?'
    from /usr/local/lib/site_ruby/1.9.1/rubygems/specification.rb:925:in `block in find_inactive_by_path'
    from /usr/local/lib/site_ruby/1.9.1/rubygems/specification.rb:924:in `each'
    from /usr/local/lib/site_ruby/1.9.1/rubygems/specification.rb:924:in `find'
    from /usr/local/lib/site_ruby/1.9.1/rubygems/specification.rb:924:in `find_inactive_by_path'
    from /usr/local/lib/site_ruby/1.9.1/rubygems.rb:185:in `try_activate'
    from /usr/lib/ruby/1.9.1/irb/locale.rb:150:in `block in search_file'
    from /usr/lib/ruby/1.9.1/irb/locale.rb:158:in `block in each_localized_path'
    from /usr/lib/ruby/1.9.1/irb/locale.rb:167:in `each_sublocale'
    from /usr/lib/ruby/1.9.1/irb/locale.rb:157:in `each_localized_path'
    from /usr/lib/ruby/1.9.1/irb/locale.rb:145:in `search_file'
    from /usr/lib/ruby/1.9.1/irb/locale.rb:124:in `find'
    from /usr/lib/ruby/1.9.1/irb/locale.rb:108:in `load'
    from /usr/lib/ruby/1.9.1/irb/locale.rb:32:in `initialize'
    from /usr/lib/ruby/1.9.1/irb/init.rb:114:in `new'
    from /usr/lib/ruby/1.9.1/irb/init.rb:114:in `init_config'
    from /usr/lib/ruby/1.9.1/irb/init.rb:16:in `setup'
    from /usr/lib/ruby/1.9.1/irb.rb:53:in `start'
    from /usr/bin/irb:12:in `<main>'

所以这是/var/lib/gems/1.9.1/extensions/x86_64-linux/1.9.1/文件夹列表:

bcrypt-3.1.7             ffi-1.9.3   nokogiri-1.6.3.rc1  therubyracer-0.12.1
binding_of_caller-0.7.2  json-1.8.1  pg-0.17.1           unicorn-4.8.3
debug_inspector-0.0.2    kgio-2.9.2  raindrops-0.13.0

正如您所看到的,我已经有了nokogiri-1.6.3.rc1,但是如果没有我的要求,我会尝试构建nokogiri-1.6.2.1。然后,我将打印语句添加到/usr/lib/ruby/1.9.1/fileutils.rb:247:in 'fu_mkdir'/usr/local/lib/site_ruby/1.9.1/rubygems/ext/builder.rb:210:in 'write_gem_make_out',以查看他们正在尝试执行的操作。我以递归方式将所有权更改为/var/lib/gems/的当前用户。然后我运行irb并获得以下内容。

Dir.mkdir /var/lib/gems/1.9.1/extensions/x86_64-linux/1.9.1/nokogiri-1.6.2.1
Building nokogiri using packaged libraries.
Building libxml2-2.8.0 for nokogiri.
************************************************************************
IMPORTANT!  Nokogiri builds and uses a packaged version of libxml2.

If this is a concern for you and you want to use the system library
instead, abort this installation process and reinstall nokogiri as
follows:

    gem install nokogiri -- --use-system-libraries

If you are using Bundler, tell it to use the option:

    bundle config build.nokogiri --use-system-libraries
    bundle install

However, note that nokogiri does not necessarily support all versions
of libxml2.

For example, libxml2-2.9.0 and higher are currently known to be broken
and thus unsupported by nokogiri, due to compatibility problems and
XPath optimization bugs.
************************************************************************
Building libxslt-1.1.28 for nokogiri.
************************************************************************
IMPORTANT!  Nokogiri builds and uses a packaged version of libxslt.

If this is a concern for you and you want to use the system library
instead, abort this installation process and reinstall nokogiri as
follows:

    gem install nokogiri -- --use-system-libraries

If you are using Bundler, tell it to use the option:

    bundle config build.nokogiri --use-system-libraries
    bundle install
************************************************************************
Dir.mkdir /var/lib/gems/1.9.1/gems/nokogiri-1.6.2.1/lib
FileUtils.mkdir_p /var/lib/gems/1.9.1/extensions/x86_64-linux/1.9.1/nokogiri-1.6.2.1
Dir.mkdir /var/lib/gems/1.9.1/extensions/x86_64-linux/1.9.1/nokogiri-1.6.2.1

我没有要求Nokogiri建造。目前我不太关心它。为什么没有我的要求就建立了Nokogiri?为什么会阻止我继续我的工作呢?

irb现在有效。 /var/lib/gems/1.9.1/extensions/x86_64-linux/1.9.1/文件夹现在看起来像

bcrypt-3.1.7             ffi-1.9.3   nokogiri-1.6.2.1    raindrops-0.13.0
binding_of_caller-0.7.2  json-1.8.1  nokogiri-1.6.3.rc1  therubyracer-0.12.1
debug_inspector-0.0.2    kgio-2.9.2  pg-0.17.1           unicorn-4.8.3

所以现在我有两个版本的nokogiri。 “停止它吧!你喝醉了!”如果你想知道我刚刚启动了我的电脑。以前我有一个应用程序构建一个定制的Nokogiri实例。但我仍然不知道为什么会这样。

0 个答案:

没有答案