我试图在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:ingem_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:ingem_original_require' from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:29:in
需要' 来自/ usr / bin / gem:9
无论我运行什么样的命令都没关系,它会引发这种情况。 (我尝试了gem -v
,gem 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应用程序..
答案 0 :(得分:1)
RedHat 5附带Ruby 1.8.5和同样古老的rubygems。 rubygems和ruby版本都太老了,不再支持操作系统基础软件包之外的任何东西了。即使在操作系统软件包中,由于整个系统的年龄,它们可能无法自行更改任何内容。
如果你真的想要/必须在Red Hat 5上使用Ruby,你可能需要获得操作系统提供的RPM的另一个来源,例如: rbenv / ruby-build或ruby-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
返回的路径)