Ruby 为什么可以';我不能装Nokogiri吗?
我通过运行以下程序安装了Nokogiri,没有任何问题:Ruby 为什么可以';我不能装Nokogiri吗?,ruby,rvm,nokogiri,Ruby,Rvm,Nokogiri,我通过运行以下程序安装了Nokogiri,没有任何问题: $ sudo gem install nokogiri Building native extensions. This could take a while... Successfully installed nokogiri-1.5.9 1 gem installed Installing ri documentation for nokogiri-1.5.9... Installing RDoc documentation for
$ sudo gem install nokogiri
Building native extensions. This could take a while...
Successfully installed nokogiri-1.5.9
1 gem installed
Installing ri documentation for nokogiri-1.5.9...
Installing RDoc documentation for nokogiri-1.5.9...
当我运行nokogiri.rb时:
#!/usr/bin/ruby -w
require 'nokogiri'
puts "Current directory is: #{ Dir.pwd }"
Dir.chdir("/home/askar/xml_files1") do |dirname|
puts "Now in: #{ Dir.pwd }"
xml_files = Dir.glob("ShipmentRequest*.xml")
if xml_files.empty?
puts "#{ dirname } is empty."
else
xml_files.each do |file|
doc = Nokogiri::XML(open(file))
# ... do something with the doc ...
end
end
end
我得到了一个错误:
$ ruby nokogiri.rb
/home/askar/.rvm/rubies/ruby-1.9.3-p429/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require': cannot load such file -- nokogiri (LoadError)
from /home/askar/.rvm/rubies/ruby-1.9.3-p429/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
我使用的是Ruby1.9.3,但出于某种原因,它引用了Ruby1.9.1。这可能是原因吗?如果仔细观察,路径以
/home/askar/.rvm/rubies/ruby-1.9.3-p429开始,因此加载路径应该是正确的
您的问题是您使用了sudo
,它将为系统ruby进行gem安装。请在不使用sudo的情况下重试,只需
gem install nokogiri
为当前rvm ruby安装gems。很高兴听到!很高兴我能提供帮助。注意,在再次安装gem之前,可能还需要运行gem uninstall nokogiri
和/或sudo uninstall nokogiri
。不管怎么说,这都是为我准备的。当我在没有sudo
的情况下操作时,我遇到了FilePermissionError(您没有/var/lib/gems/2.3.0目录的写入权限)。如果我使用sudo
--但是--错误占上风。@mauroc8:授予在文件夹上写入的权限(例如:sudo chmod-R 777/var/lib/gems/2.3.0
),那么它应该在没有sudo
的情况下工作。如果您使用RVM或rbenv管理您的红宝石,则永远不要使用sudo
安装gems,除非您当前设置为使用“系统”红宝石。@锡人。谢谢,我会记住的。为什么我被否决了?我在按照安装说明进行安装,他们在使用“sudo”“好了,我不知道你为什么会被否决,但我可以说你在遵循指示时没有进行精神检查。Nokogiri现场的说明与RVM或rbenv的使用无关。作为Ruby环境的“管理员”,您必须了解自己的情况,并决定是按照他们的指示行事,还是应用一些环境知识,排除他们的一些建议。你不能说“我这么做是因为他们说了!”,相反,你必须排除那些没有意义的事情。这当然是一次学习的经历,但你是老板。@锡人我同意你的看法。但是stackoverflow.com不是大学。人们来这里解决他们的问题和我犯的错误,我相信是可以原谅的。如果我问的是非建设性的或非常笼统的问题,我会理解的。我确信那个否决投票的管理员,这是他的主观意见,另一个管理员不会否决投票。:)