无法在Redhat 5.5上运行RubyGems

时间:2015-05-13 09:12:47

标签: ruby rubygems redhat

我试图在RedHat 5.5机器上安装Ruby和RubyGems。我通过运行以下两个命令来获取它们:

sudo yum install ruby
sudo yum install rubygems

安装完毕。但是当我尝试运行gem时,我收到以下错误:

  

/usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in   require': undefined method end_with&#39?; for"没有要加载的文件 -   Win32API":String(NoMethodError)           来自/usr/lib/ruby/site_ruby/1.8/rubygems/config_file.rb:55           来自/usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:29:in   gem_original_require' from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:29:in需要'           来自/usr/lib/ruby/site_ruby/1.8/rubygems/gem_runner.rb:8           来自/usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:29:in   gem_original_require' from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:29:in需要'           来自/ usr / bin / gem:9

无论我运行什么样的命令都没关系,它会引发这种情况。 (我尝试了gem -vgem update

Ruby的版本似乎是 1.8 但我确定RubyGems版本时遇到了问题。我vi rubygems.rb进入procedure TForm1.btnPostClick(Sender: TObject); var IdHTTP: TidHTTP; auth: TStringList; test,token:string; begin IdHTTP := TidHTTP.Create(nil); IdHTTP.Request.Accept :='text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'; IdHTTP.Request.AcceptCharSet :='iso-8859-1, utf-8, utf-16, *;q=0.1'; IdHTTP.Request.AcceptEncoding :='deflate, gzip, identity, *;q=0'; IdHTTP.Request.Connection :='Keep-Alive'; IdHTTP.Request.ContentType :='application/x-www-form-urlencoded'; token := IdHTTP.Get('http://localhost:8000/accounts/signup/'); token := copy(token, AnsiPos('csrfmiddlewaretoken', token) + 28, 32); IdHTTP.Request.CustomHeaders.Clear; with IdHTTP.Request.CustomHeaders do begin AddValue('X-CSRFToken',token); Values['COOKIE']:=''; //if IdHTTP2.CookieManager.CookieCollection.count > 0 then // Add('COOKIE: '+token); end; try auth := TStringList.Create; auth.Add('csrfmiddlewaretoken='+ token); auth.Add('first_name=' + edtVorname.Text); auth.Add('last_name=' + edtName.Text); auth.Add('function=' + edtFunction.Text); auth.Add('company=' + edtCompany.Text); auth.Add('country=' + edtCountry.Text); auth.Add('email=' + edtEmail.Text); auth.Add('password1=' + edtPassword.Text); auth.Add('password2=' + edtPasswordAgain.Text); //IdHTTP.Request.CustomHeaders.AddValue('Accept-Language', 'en-EN'); //IdHTTP.Request.CustomHeaders.AddValue('Referer', IdHTTP.post('http://127.0.0.1:8000/accounts/signup/', auth); except end; end; ,在顶部将版本统计为 1.5

尝试通过运行建议here的downgrade命令来修复,但它也会抛出相同的错误。

有关修复此问题的任何帮助?只是想让这个运行,以便我可以运行一个RoR应用程序..

2 个答案:

答案 0 :(得分:1)

RedHat 5附带Ruby 1.8.5和同样古老的rubygems。 rubygems和ruby版本都太老了,不再支持操作系统基础软件包之外的任何东西了。即使在操作系统软件包中,由于整个系统的年龄,它们可能无法自行更改任何内容。

如果你真的想要/必须在Red Hat 5上使用Ruby,你可能需要获得操作系统提供的RPM的另一个来源,例如: rbenv / ruby-buildruby-install甚至rvm。您应该使用较新的Ruby版本,即2.1或2.2版本。所有Ruby版本<到目前为止,语言开发人员不支持2.0。

或者,你应该尝试使用更新版本的RedHat,即不需要支持8年历史的RedHat 7 ......

答案 1 :(得分:0)

可疑的是,yum安装了ruby 1.8,这是一个非常过时的版本,现在你的系统上有两个版本的ruby,而gem试图使用旧版本。

检查最近安装的软件包的版本并尝试强制rubygems使用新版本(删除旧的ruby或链接到which ruby返回的路径)