我在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实例。但我仍然不知道为什么会这样。