2017-08-14 17 views
0

公開:基本的なコード構文を超えてRubyについてはほとんど分かりません。私の馬鹿馬鹿しくする既存のRubyバージョンの隣に新しいRubyバージョンを実行

Ruby 1.8のOpenSSLライブラリは、TLS 1.2をサポートしていないようです。しかし、1.8に依存しているアプリケーションがあるので、新しいバージョンのRubyを同じシステム上で同時に実行し、同じ宝石の新しいバージョンをセットアップすることができるかどうかを確認したい。

現在、バージョン1.8は/usr/lib/ruby/1.8にあります。理想的には、私は同じ構造を保ち、新しいバージョンをインストールしたいと思います(最新の安定したバージョンが2.3.xか2.4.xかに関係なく)。

私はRuby管理者ではありません。他の人からサーバーを継承して、Rubyが他のRuby体験がなくても、Rubyが最良の方法であると判断してから退社しました。

  1. バックワードと互換性のあるRubyのバージョン(たとえば、2.4.1で大きな変更を加えずに1.8のバージョンで構築されたアプリ)はどうでしょうか。
  2. どのように宝石が動作するか更新されます。 2.4.1は1.8から宝石を使用できますか、または特定のRubyのバージョンに宝石を使用できますか?ミックス・アンド・マッチができますか?何らかの移行パスがありますか?
  3. 2つの異なる並行バージョンを適切に管理する方法(あるバージョンを他のバージョンよりも上で使用するように指示する方法、または既存のアプリケーションが新しいバージョンを自動的に使用しようとしないようにする方法)
  4. インストールのベストプラクティス(私は通常ソースからコンパイルしますが、提案は公開しています)。
  5. Rubyアプリケーション全体を更新せずにRubyのOpenSSLライブラリを更新するだけでも可能ですか?現在、OpenSSL 0.9.8oを使用しているため、かなり遅れています。

サーバでDebian 6.0.6が動作しています(私はRed HatやCentOSに精通していますので、この問題に関するパッケージ管理などのヒントは歓迎されます)。

答えて

4
  1. 現代のルビーは "成熟"し、非常に安定しています。 2.0.0 - >(最新の安定版)2.4.1からのアップグレードは、一般的に非常に簡単です。しかし、ルビーはかなりの期間(必要!)1.8 - >1.9 - >2.0から変更されました。アップグレードのこの部分は問題になる可能性があります。
  2. 現在のRubyインストール内に宝石がインストールされています。たとえば、あなたは現在、 "ruby 1.8 version"のCanCanを持っています。このアプリケーションのruby版を更新する場合は、ruby版のすべてのgem(おそらくbundle install経由)を再インストールする必要があります。移行パスは基本的に次のとおりです。可能な限り包括的なテストスイートを入手してください。そのルビーバージョン内で可能な限り宝石をアップグレードしてください。ルビーのバージョンを更新する。必要に応じてテストやコードを修正してください。繰り返す。
  3. rvmまたはrbenvのようなツールを使用して、複数の並列ルビバージョンを1台のマシンにインストールします。
  4. ポイント3を参照してください。おそらくソースから何かをコンパイルする必要はありません。
  5. ルビー1.8は古いです。そのサポートは2013年に戻ってしまいました。あなたのアプリケーションには、間違いなく古いライブラリの巨大なリストがあり、あらゆる種類のセキュリティ上の脆弱性が存在します.6年以上更新しないとどうなりますか?セキュリティの観点から、私はこの1つのOpenSSLの問題の回避策を見つけようと提案し、ここで大きな問題は無視します。
+0

明らかに、システムのOpenSSLライブラリは0.9.8oに戻っています。ああ。システムがより大きな見直しを必要とするのは明らかですが、それははるかに大きなプロセスになるでしょう。私は開発者のショーストップ問題を解決するために暫定的な修正を見つけることを試みています。 私はOpenSSL 1.0.2lをシステム上の別のフォルダ/usr/local/openssl/1.0.2lにインストールしています。既存のRubyのインストールを更新して、単にそれを指すようにすることはできますか? – jhilgeman

+0

「rvm」や「rbenv」がインストールされていないようです。 – jhilgeman

+0

OpenSSLs ABIも0.9.8から1.0.2の間で変更されました。したがって、すでにコンパイルされたRuby 1.8は、おそらく再コンパイルせずにOpenSSL 1.0.2で正しく動作しません。 –

関連する問題