在现有Ruby版本旁边运行较新的Ruby版本

时间:2017-08-14 16:06:14

标签: ruby openssl

披露:除了一些基本的代码语法之外,我对Ruby知之甚少。忍住我的愚蠢。

Ruby 1.8的OpenSSL库似乎不支持TLS 1.2。但是,运行的应用程序依赖于1.8,因此我想看看我是否可以在同一系统上同时运行更新版本的Ruby,并使用相同gem的较新版本进行设置。

目前版本1.8位于/usr/lib/ruby/1.8。理想情况下,我希望保持相同的结构并安装更新的版本(不确定最新的稳定版本是什么 - 无论是2.3.x还是2.4.x)。

那就是说,我不是Ruby管理员。我从其他人那里继承了一台服务器,他认为Ruby是最好的做事方式,尽管公司内部没有其他Ruby经验,然后就离开了。我知道一些系统管理员的东西,但我不知道:

  1. 如何向后兼容的Ruby版本(例如,在没有对2.4.1进行任何重大修改的情况下构建针对1.8版本的应用程序)。
  2. 宝石如何工作/更新。 2.4.1可以使用1.8中的宝石,还是与特定Ruby版本绑定的宝石?可以混合搭配吗?是否存在某种迁移路径?
  3. 如何正确管理两个不同的并发版本(如何告诉应用程序使用一个版本而不是另一个版本,或者阻止现有应用程序自动尝试使用新版本,如果它们不兼容则会中断)。 / LI>
  4. 任何最佳安装实践(我通常从源代码编译,但我愿意接受建议)。
  5. 甚至可以在不更新整个Ruby应用程序的情况下更新Ruby的OpenSSL库吗?它目前在OpenSSL 0.9.8o上,所以它落后于时代。
  6. 服务器正在运行Debian 6.0.6(我对Red Hat和CentOS更熟悉,因此欢迎任何与此问题相关的软件包管理等提示。)

1 个答案:

答案 0 :(得分:4)

  1. 现代红宝石已“成熟”并变得非常稳定。从2.0.0升级 - > (最新的稳定版)2.4.1通常很容易。然而,ruby经历了1.8 - >的相当重要(必要!)变化的时期。 1.9 - > 2.0;这部分升级可能会有问题。
  2. Gems安装在当前的ruby安装中。例如,您目前拥有CanCan的“ruby 1.8版本”。如果您更新此应用程序的ruby版本,则需要为ruby版本重新安装所有gem(可能通过bundle install)。迁移路径基本上是:尽可能全面地获得测试套件;在该ruby版本中尽可能地升级gem;更新ruby版本;必要时修复测试和/或代码;重复。
  3. 使用rvmrbenv等工具在一台计算机上安装多个并发ruby版本。
  4. 参见第3点。您可能不需要从源代码编译任何内容。
  5. Ruby 1.8 old 。对它的支持在2013年被撤销。你的应用程序无疑会有一个庞大的过时库列表,存在各种各样的安全漏洞 - 这就是当你不更新它超过6年时会发生什么!从安全角度来看,我不建议尝试为这一个OpenSSL问题找到一些解决方法,而忽略这里更大的问题。