Chruby устанавливает Ruby 1.8.7

Я использую chruby для управления версиями и клонирую проект, к сожалению, в Ruby 1.8.7. Можно ли установить Ruby 1.8.7 с chruby? У меня возникли проблемы с поиском ресурсов для этого процесса.

6 ответов

TL; DR

Вы не можете, по крайней мере, не использовать ruby-install. Ruby 1.8.7 - это конец жизни, а поддержка его была удалена с помощью средства установки Ruby-установки Postmodern.

Ruby 1.8.7 не поддерживается

Сообщения об ошибках консоли могут отличаться в зависимости от установленных библиотек и компиляторов, но немодифицированный Ruby 1.8.7 вряд ли скомпилируется на более поздних системах. Например, на Ubuntu 13.10:

$ ruby-install ruby 1.8.7
[lots of output elided]
math.c:37:13: error: missing binary operator before token "(" #elif define(ERANGE) ^
make: *** [math.o] Error 1
!!! Compiling ruby 1.8.7 failed!

Почему Ruby 1.8.7 не поддерживается

Поддержка Ruby 1.8.7 была сброшена Postmodern 9 декабря 2013 года. Commit f013ed2 объясняет:

commit f013ed2476ecce82ea41ff63de413daf2231b82b
Author: Postmodern <postmodern.[removed_email]>
Date: Mon Dec 9 16:09:30 2013 -0800 Drop support for Ruby 1.8.x since it has reached End-of-Life. * CVE-2013-4164 affects Ruby 1.8.x and there is no official patch. Enabling users to install and run 1.8.x at this point is irresponsible.
</postmodern.[removed_email]>

Альтернативы

Ваши альтернативы включают:

  • Переход на новую стабильную версию Ruby, например Ruby 2.1.0.
  • Использование менеджера версий Ruby, такого как RVM, который на данный момент поддерживает Ruby 1.8.6-p420 и 1.8. 7-P374.
  • Используйте ruby-build вместо ruby-install. Следуйте инструкциям chruby по использованию ruby-build в README, чтобы убедиться, что chruby может найти ваш недавно установленный Ruby.
  • Установка 1.8.7 вручную где-нибудь, что chruby может найти его, а затем используя chruby для управления им.


Мы удалили все обходные исправления и конкретный код 1.8.x в версия 0.4.0. Однако, если вы устанавливаете ruby ​​1.8.7 в более старую систему (со старыми версиями GCC, openssl и т.д.), Она все равно должна компилироваться. 1.8.7 не будет компилироваться в новых системах с более новыми версиями GCC, openssl и т.д. Если вам действительно нужно установить 1.8.7, вы можете попробовать применить RVM 1.8.7 исправления с опцией --patch; хотя работа с сильно залатанным рубином опасна. Кроме того, RedHat и Debian по-прежнему поддерживают пакеты ruby ​​1.8.7 для своих корпоративных пользователей.


Вы можете использовать ruby-build, который поддерживает определение для МРТ 1.8.7.

Затем установите 1.8.7, выполнив:

ruby-build 1.8.7-p375 /opt/rubies/1.8.7-p375


Если вы находитесь на OS X (10.11, El Capitan), вы можете установить Ruby 1.8.7 с помощью ruby-build таким образом, чтобы chruby сможет использовать его:

brew install ruby-build
brew install openssl libyaml libffi
brew install apple-gcc42
brew install openssl098
mkdir -p ~/.rubies
brew link openssl098 --force
ruby-build 1.8.7-p375 ~/.rubies/ruby-1.8.7
brew unlink openssl098
chruby 1.8.7

Ссылка: http://pawelgoscicki.com/archives/2015/12/installing-ruby-1-8-7-head-for-chruby-using-ruby-build-on-os-x-10-11-el-capitan/


К сожалению, chruby больше не поддерживает 1.8.7. Мне удалось заставить его работать/работать, установив 1.8.7 с помощью rvm и связав его с ~/.rubies, например:

\curl -sSL https://get.rvm.io | bash
rvm install 1.8.7-head
ln -s ~/.rvm/rubies/ruby-1.8.7-head ~/.rubies/ruby-1.8.7


Работа вокруг заключается в том, чтобы просто установить ruby ​​с помощью apt-get

apt-get install ruby

Далее скажите chruby, чтобы использовать систему ruby.

chruby system

Для сохранения добавьте его в файл версии ruby ​​

echo 'system' > .ruby-version

licensed under cc by-sa 3.0 with attribution.