Можно ли установить RubyGems на Ruby 1.8.6? - PullRequest
2 голосов
/ 30 марта 2011

Я пытаюсь установить RubyGems в дистрибутив на основе Fedora, который имеет только Ruby 1.8.6. Я скачал пакет RubyGems 1.6.2, разархивировал и запустил

$ ruby setup.rb

Бомба с довольно бесполезным сообщением об ошибке:

./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

Глядя на источник исключения, кажется, что он сначала пытается:

require "etc"
Etc.sysconfdir

и когда он выдает NoMethodError, он пытается потребовать Win32API (который, как я полагаю, отсутствует в linux).

Я предполагаю, что это может быть потому, что у меня есть старая версия Ruby, но я не могу найти требования к версии RubyGems, задокументированные где-либо. Кто-нибудь может подсказать, как поступить с этим?

Ответы [ 3 ]

1 голос
/ 30 марта 2011

Как насчет установки RVM ? Тогда вы сможете легко управлять несколькими версиями Ruby и, возможно, установить более свежую версию Ruby. Это работает очень хорошо.

0 голосов
/ 03 апреля 2011

Вы не можете установить RubyGems выше 1.3.5, если у вас установлена ​​только версия Ruby 1.8.5.RubyGems требует как минимум Ruby 1.8.6 для установки.

Мой опыт: - У меня установлен RubyGems 1.3.5 в моем CentOS Linux, потому что Ruby - 1.8.6.- То, что я сделал с Mac OS X, которая поставляется с Ruby 1.8.7, - это обновление gem с версии 1.3.5 до версии 1.6.2 с использованием оригинального gem.

0 голосов
/ 30 марта 2011

Определенно возможно установить RubyGems на Ruby 1.8.6, но не RubyGems 1.6.2.Поддержка Ruby 1.8.6 была прекращена в RubyGems 1.4.0.

Почему вы пытаетесь обойти менеджер пакетов вашего дистрибутива Linux?Они проверяют совместимость между пакетами, которые они отправляют , точно , чтобы избежать подобных ситуаций.

В общем случае не стоит смешивать разные системы управления пакетами.В идеале, вы не должны использовать RubyGems вообще, когда используете Linux, так как большинство систем управления пакетами дистрибутива так же хороши, как RubyGems.RubyGems необходим только в операционных системах, таких как Windows или OSX, которые все еще зависают в 1980-х годах.

Вот что я делаю в своей установке Redmine, например: я просто использую дистрибутивы Rails, RedCloth, RMagick,Rack, Redmine, Ruby Enterprise Edition, Phusion Passenger и все, что мне нужно.У меня даже RubyGems не установлен вообще , ни из дистрибутива, ни из источника.

Если, однако, по какой-то причине вам нужен RubyGems,тогда вам следует переместить всю среду Ruby из диспетчера пакетов распространения и управлять ею самостоятельно.Просто установите любую версию и разновидность Rubinius, JRuby, IronRuby, YARV или любую другую, установите последнюю версию RubyGems из исходного кода (или не устанавливайте, поскольку все вышеперечисленное уже поставляется с одной предустановленной в любом случае) и установите всеиз ваших библиотек Ruby как Gems.

Как было отмечено в других ответах, RVM может помочь, но, как правило, не требуется, если вы не хотите управлять несколькими установками Ruby на одном компьютере.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...