Противоречивые версии ruby - PullRequest
0 голосов
/ 12 мая 2010

У меня проблемы с конфликтующими версиями Ruby, которые я установил. У меня была 1.8.6, а затем установлена ​​1.8.7, и это вызвало проблемы. При попытке запустить приложение ruby ​​on rails я получаю следующую ошибку:

/usr/local/lib/ruby/1.8/i686-linux/rbconfig.rb:7: ruby lib version (1.8.6) doesn't match executable version (1.8.7) (RuntimeError)

Я бы хотел как-то удалить 1.8.7 и просто использовать 1.8.6, но понятия не имею, как это сделать.

Ответы [ 4 ]

3 голосов
/ 12 декабря 2012

Наткнулся на эту же проблему и подумал, что поделюсь своими выводами. Была установлена ​​версия ruby ​​1.8.7 с помощью rpm (centos 6.3), и я скомпилировал 1.9.3 из исходников и поместил его в каталог / opt / upnxt / ruby. Я изменил свое окружение на:

export PATH=/opt/upnxt/ruby/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin
export LD_LIBRARY_PATH=/opt/upnxt/ruby/lib64
export RUBYPATH=/opt/upnxt/ruby/bin
export RUBY_HOME=/opt/upnxt/ruby
export RUBYLIB=/opt/upnxt/ruby/lib64/ruby/1.9.1:/opt/upnxt/ruby/lib64/ruby/1.9.1/x86_64-linux
export GEM_HOME=/opt/upnxt/ruby/lib64/ruby/1.9.1
export GEM_PATH=/opt/upnxt/ruby/lib64/ruby/1.9.1:/opt/upnxt/ruby/lib64/ruby/gems/1.9.1

и затем при запуске:

$ ruby /opt/upnxt/ruby/bin/gem environment
RubyGems Environment:
  - RUBYGEMS VERSION: 1.8.23
  - RUBY VERSION: 1.9.3 (2012-11-10 patchlevel 327) [x86_64-linux]
  - INSTALLATION DIRECTORY: /opt/upnxt/ruby/lib64/ruby/1.9.1
  - RUBY EXECUTABLE: /usr/bin/ruby
  - EXECUTABLE DIRECTORY: /opt/upnxt/ruby/lib64/ruby/1.9.1/bin
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86_64-linux
  - GEM PATHS:
     - /opt/upnxt/ruby/lib64/ruby/1.9.1
     - /opt/upnxt/ruby/lib64/ruby/gems/1.9.1
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :benchmark => false
     - :backtrace => false
     - :bulk_threshold => 1000
  - REMOTE SOURCES:
     - http://rubygems.org/

При запуске без команды 'ruby', я получаю:

$ /opt/upnxt/ruby/bin/gem environment
/opt/upnxt/ruby/lib64/ruby/1.9.1/x86_64-linux/rbconfig.rb:7: ruby lib version (1.9.3) doesn't match executable version (1.8.7) (RuntimeError)
    from /opt/upnxt/ruby/lib64/ruby/1.9.1/rubygems.rb:31:in `require'
    from /opt/upnxt/ruby/lib64/ruby/1.9.1/rubygems.rb:31
    from /opt/upnxt/ruby/bin/gem:8:in `require'
    from /opt/upnxt/ruby/bin/gem:8

из-за значения по умолчанию #! / Usr / bin / ruby, как указано ранее. Я думаю, именно поэтому вместо этого следует использовать «#! / Bin / env ruby» (или «#! / Usr / bin / env ruby»)

Если кто-то подскажет, как изменить вывод «RUBY EXECUTABLE» из вывода «gem environment», чтобы мне не нужно было указывать его в командной строке, я был бы благодарен

ура

Геррит

0 голосов
/ 12 мая 2010

Ваш самый простой путь и будущее доказательство будет также использовать rvm. Загрузите нужную версию ruby ​​с помощью rvm и установите ее по умолчанию.

Установка: http://rvm.beginrescueend.com/rvm/install/

Установка по умолчанию:
rvm 1.8.6 --default

Весь процесс займет не более 15 минут. В этом все четко объяснено. Ваша среда будет настроена до того, как вы закончите просмотр этого подкаста:
http://railscasts.com/episodes/200-rails-3-beta-and-rvm

0 голосов
/ 12 мая 2010

Да, установка пути:

export PATH=yourrubypath/bin:$PATH

должен это сделать.

Я рекомендую вам установить rvm , чтобы вы могли легко запускать различные версии ruby ​​и управлять наборами гемов

Инструкция по установке здесь . Однако это в основном сводится к:

bash < <( curl http://rvm.beginrescueend.com/releases/rvm-install-head )

Затем вы можете установить более новый ruby ​​из исходного кода (он скомпилирует его!):

$ rvm install 1.9.1 ; rvm 1.9.1

$ ruby -v

ruby 1.9.1p243 (2009-07-16 revision 24175) [x86_64-linux]

$ which ruby

/home/you/.rvm/ruby-1.9.1-p243/bin/ruby

Вы можете вернуться к «системному», выполнив:

$ rvm system
0 голосов
/ 12 мая 2010

Просто измените ваш $ PATH так, чтобы он указывал на нужную версию.

Я устанавливаю ruby ​​из архива (а не из дистрибутива). Таким образом, у меня может работать несколько разных версий одновременно, мне просто нужно обновить $ PATH в сеансе, в котором я хочу использовать другую версию.

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