3

我正在使用 chruby 进行版本管理,并且正在克隆一个不幸的是 Ruby 1.8.7 中的项目。是否可以使用 chruby 安装 Ruby 1.8.7?我在为这个过程寻找资源时遇到了麻烦。

4

6 回答 6

3

TL;博士

你不能,至少不使用ruby​​-install。Ruby 1.8.7已停产,Postmodern 的 ruby​​-install 工具已放弃对它的支持

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 不受支持

Postmodern 于 2013 年 12 月 9 日放弃了对 Ruby 1.8.7 的支持。提交f013ed2解释说:

commit f013ed2476ecce82ea41ff63de413daf2231b82b
Author: Postmodern <postmodern.mod3@gmail.com>
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.

备择方案

您的选择包括:

  1. 升级到 Ruby 的较新稳定版本,例如Ruby 2.1.0
  2. 使用RVM等 Ruby 版本管理器,在撰写本文时,它仍然支持 Ruby 1.8.6-p420 和 1.8.7-p374。
  3. 使用ruby​​-build而不是 ruby​​-install。按照自述文件中关于使用 ruby​​-build 的 chruby 说明,确保chruby 可以找到您新安装的 Ruby。
  4. 在chruby可以找到的地方手动安装1.8.7,然后用chruby来管理。
于 2014-02-22T16:20:07.517 回答
3

我们确实删除了0.4.0 版本中的所有解决方法补丁和 1.8.x 特定代码。但是,如果您在较旧的系统(使用较旧版本的 GCC、openssl 等)上安装 ruby​​ 1.8.7,它仍然应该可以编译。1.8.7不会在较新版本的 GCC、openssl 等的较新系统上编译。如果确实需要安装 1.8.7,可以尝试使用选项应用RVM的 1.8.7 补丁--patch;尽管运行一个严重修补的 ruby​​ 是有风险的。此外,RedHat 和 Debian 仍在为其企业用户维护 ruby​​ 1.8.7 软件包。

于 2014-02-23T01:11:52.217 回答
1

您可以使用ruby ​​-build 维护 MRI 1.8.7 的定义。

然后通过执行以下操作安装 1.8.7:

ruby-build 1.8.7-p375 /opt/rubies/1.8.7-p375
于 2014-11-15T11:47:39.887 回答
0

不幸的是chruby不再支持 1.8.7。通过使用 rvm 安装 1.8.7 并将其链接到 ,我设法使其工作/运行~/.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
于 2015-11-21T20:33:01.300 回答
0

如果您使用的是 OS X(10.11,El Capitan),您可以使用ruby ​​-build 安装 Ruby 1.8.7 ,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: //pawelgosicki.com/archives/2015/12/installing-ruby-1-8-7-head-for-chruby-using-ruby-build-on-os-x-10-11-el-首长/

于 2015-12-13T12:36:07.097 回答
0

解决方法是使用 apt-get 安装 ruby

apt-get install ruby

接下来告诉 chruby 使用系统 ruby​​。

chruby system

为了持久性,将其添加到 ruby​​ 版本文件中

echo 'system' > .ruby-version
于 2015-10-14T17:03:45.103 回答