Reputation: 3687
I'm trying to install RubyGems on a Fedora-based distribution that only has Ruby 1.8.6. I downloaded the RubyGems 1.6.2 package, unzipped and ran
$ ruby setup.rb
It bombs out with the rather unhelpful error message:
./lib/rubygems/custom_require.rb:54: warning: parenthesize argument(s) for future version
./lib/rubygems/custom_require.rb:57:in `require': undefined method `end_with?' for "no such file to load -- Win32API":String (NoMethod\
Error)
from ./lib/rubygems/config_file.rb:55
from ./lib/rubygems/custom_require.rb:36:in `gem_original_require'
from ./lib/rubygems/custom_require.rb:36:in `require'
from ./lib/rubygems/gem_runner.rb:8
from ./lib/rubygems/custom_require.rb:36:in `gem_original_require'
from ./lib/rubygems/custom_require.rb:36:in `require'
from setup.rb:25
Looking at the source of the exception, it seems that it first tries:
require "etc"
Etc.sysconfdir
and when that throws a NoMethodError
it tries to require Win32API
(which I assume isn't present on linux).
I'm guessing that this could be because I have an old version of Ruby, but I can't find the RubyGems version requirements documented anywhere. Can anyone suggest how to proceed with this?
Upvotes: 2
Views: 3563
Reputation: 1301
You can't install RubyGems greater than 1.3.5 if you only have Ruby version 1.8.5. RubyGems requires at least Ruby 1.8.6 to install.
My background: - I have RubyGems 1.3.5 installed in my CentOS Linux because Ruby is 1.8.6. - What I did with Mac OS X, which comes with Ruby 1.8.7, is to upgrade gem from version 1.3.5 to version 1.6.2 by using the original gem.
Upvotes: 0
Reputation: 369624
It is definitely possible to install RubyGems on Ruby 1.8.6, but not RubyGems 1.6.2. Support for Ruby 1.8.6 was dropped in RubyGems 1.4.0.
Why are you trying to circumvent your Linux distribution's package manager? They test interoperability between the packages they ship precisely to avoid situations like this.
In general, it is not a good idea to mix different package management systems. Ideally, you shouldn't be using RubyGems at all, when using Linux, since most distribution's package management systems are as good as RubyGems anyway. RubyGems is only needed on operating systems like Windows or OSX which are still stuck in the 1980s.
Thats what I do on my Redmine installation, for example: I just use the distribution packages of Rails, RedCloth, RMagick, Rack, Redmine, Ruby Enterprise Edition, Phusion Passenger, and whatever else I need. I don't even have RubyGems installed at all, neither from a distribution package nor from source.
If, however, for some reason, you need RubyGems, then you should move your entire Ruby environment out of the distribution package manager and manage it yourself. Just install whatever version and flavor of Rubinius, JRuby, IronRuby, YARV or whatever you want, install the latest version of RubyGems from source (or don't, since all of the above already ship with one pre-installed anyway) and install all of your Ruby libraries as Gems.
As was noted in other answers, RVM can be of help, but is generally unnecessary unless you want to manage multiple Ruby installations on the same machine.
Upvotes: 0
Reputation: 425
How about installing RVM? Then you can manage multiple Ruby versions easily and, maybe, install a more recent version of Ruby. It works really well.
Upvotes: 1