2017-02-19 140 views
0

私はrbenvを使ってruby 2.3.0をインストールしました。インストール後、ルビーは別のopensslを使用しています。私は自分のOSで何をしていますか?どうすれば解決できますか?Ruby opensslのバージョンがシステムのopensslと異なる

which openssl 
/usr/bin/openssl 

RUBY_CONFIGURE_OPTS="--with-openssl-dir=/usr/bin/openssl” rbenv install 2.3.1 

BUILD FAILED (CentOS release 6.8 (Final) using ruby-build 20160913-13-g8ef0c34) 

Inspect or clean up the working tree at /tmp/ruby-build.20170219080937.10731 
Results logged to /tmp/ruby-build.20170219080937.10731.log 

ログファイル

[[email protected] pkgconfig]$ ruby -ropenssl -e 'puts OpenSSL::OPENSSL_VERSION' 
    OpenSSL 1.0.1e 11 Feb 2013 
[[email protected] pkgconfig]$ openssl version 
    OpenSSL 1.0.2k 26 Jan 2017 

私はopensslのオプション付きのルビーを再インストールしようとした、私には、OpenSSL dirオプションで実行可能パスを与えるエラー

の下に取得しています

linking shared-object digest/bubblebabble.so make[2]: Leaving directory `/tmp/ruby-build.20170219073346.517/ruby-2.3.1/ext/digest/bubblebabble' make[2]: Entering directory `/tmp/ruby-build.20170219073346.517/ruby-2.3.1/ext/digest/md5' compiling md5init.c cc1: error: /usr/bin/openssl/include: Not a directory make[2]: *** [md5init.o] Error 1 make[2]: Leaving directory `/tmp/ruby-build.20170219073346.517/ruby-2.3.1/ext/digest/md5' make[1]: *** [ext/digest/md5/all] Error 2 make[1]: Leaving directory `/tmp/ruby-build.20170219073346.517/ruby-2.3.1' make: *** [build-ext] Error 2 

与えるソースディレクトリパス

RUBY_CONFIGURE_OPTS=--with-openssl-dir=/usr/local/src/openssl-1.0.2k rbenv install 2.3.1 

Inspect or clean up the working tree at /tmp/ruby-build.20170219084345.1062 
Results logged to /tmp/ruby-build.20170219084345.1062.log 

Last 10 log lines: 
    from /tmp/ruby-build.20170219084345.1062/ruby-2.3.1/lib/rubygems/core_ext/kernel_require.rb:55:in `require' 
    from /tmp/ruby-build.20170219084345.1062/ruby-2.3.1/lib/rubygems/package.rb:44:in `<top (required)>' 
    from /tmp/ruby-build.20170219084345.1062/ruby-2.3.1/lib/rubygems/core_ext/kernel_require.rb:55:in `require' 
    from /tmp/ruby-build.20170219084345.1062/ruby-2.3.1/lib/rubygems/core_ext/kernel_require.rb:55:in `require' 
    from /tmp/ruby-build.20170219084345.1062/ruby-2.3.1/lib/rubygems/installer.rb:10:in `<top (required)>' 
    from /tmp/ruby-build.20170219084345.1062/ruby-2.3.1/lib/rubygems/core_ext/kernel_require.rb:55:in `require' 
    from /tmp/ruby-build.20170219084345.1062/ruby-2.3.1/lib/rubygems/core_ext/kernel_require.rb:55:in `require' 
    from ./tool/rbinstall.rb:657:in `<module:RbInstall>' 
    from ./tool/rbinstall.rb:585:in `<main>' 

ログファイル(CentOSの6.8(決勝)ルビー・ビルド使っ20170201から7を-g5d62e84を解放)FAILED BUILD

generating x86_64-linux-fake.rb 
x86_64-linux-fake.rb updated 
./miniruby -I./lib -I. -I.ext/common ./tool/runruby.rb --extout=.ext -- --disable-gems -r./x86_64-linux-fake ./tool/rbinstall.rb --make="make" --dest-dir="" --extout=".ext" --mflags="" --make-flags="" --data-mode=0644 --prog-mode=0755 --installed-list .installed.list --mantype="doc" --install=all --rdoc-output=".ext/rdoc" 
/tmp/ruby-build.20170219084345.1062/ruby-2.3.1/lib/rubygems/core_ext/kernel_require.rb:55:in `require': /tmp/ruby-build.20170219084345.1062/ruby-2.3.1/.ext/x86_64-linux/openssl.so: undefined symbol: EC_GROUP_new_curve_GF2m - /tmp/ruby-build.20170219084345.1062/ruby-2.3.1/.ext/x86_64-linux/openssl.so (LoadError) 
    from /tmp/ruby-build.20170219084345.1062/ruby-2.3.1/lib/rubygems/core_ext/kernel_require.rb:55:in `require' 
    from /tmp/ruby-build.20170219084345.1062/ruby-2.3.1/.ext/common/openssl.rb:13:in `<top (required)>' 
    from /tmp/ruby-build.20170219084345.1062/ruby-2.3.1/lib/rubygems/core_ext/kernel_require.rb:55:in `require' 
    from /tmp/ruby-build.20170219084345.1062/ruby-2.3.1/lib/rubygems/core_ext/kernel_require.rb:55:in `require' 
    from /tmp/ruby-build.20170219084345.1062/ruby-2.3.1/lib/rubygems/security.rb:12:in `<top (required)>' 
    from /tmp/ruby-build.20170219084345.1062/ruby-2.3.1/lib/rubygems/core_ext/kernel_require.rb:55:in `require' 
    from /tmp/ruby-build.20170219084345.1062/ruby-2.3.1/lib/rubygems/core_ext/kernel_require.rb:55:in `require' 
    from /tmp/ruby-build.20170219084345.1062/ruby-2.3.1/lib/rubygems/package.rb:44:in `<top (required)>' 
    from /tmp/ruby-build.20170219084345.1062/ruby-2.3.1/lib/rubygems/core_ext/kernel_require.rb:55:in `require' 
    from /tmp/ruby-build.20170219084345.1062/ruby-2.3.1/lib/rubygems/core_ext/kernel_require.rb:55:in `require' 
    from /tmp/ruby-build.20170219084345.1062/ruby-2.3.1/lib/rubygems/installer.rb:10:in `<top (required)>' 
    from /tmp/ruby-build.20170219084345.1062/ruby-2.3.1/lib/rubygems/core_ext/kernel_require.rb:55:in `require' 
    from /tmp/ruby-build.20170219084345.1062/ruby-2.3.1/lib/rubygems/core_ext/kernel_require.rb:55:in `require' 
    from ./tool/rbinstall.rb:657:in `<module:RbInstall>' 
    from ./tool/rbinstall.rb:585:in `<main>' 
make: *** [do-install-all] Error 1 
+0

['OpenSSL :: OPENSSL_VERSION'](http://ruby-doc.org/stdlib-2.4.0/libdoc/openssl/rdoc/OpenSSL.html#OPENSSL_VERSION)は、Rubyが_built_であったバージョンです。isn必ずしも現在使用しているバージョンではありません。 ['OpenSSL :: OPENSSL_LIBRARY_VERSION'](http://ruby-doc.org/stdlib-2.4.0/libdoc/openssl/rdoc/OpenSSL)の価値は何ですか?html#OPENSSL_LIBRARY_VERSION)? – matt

+0

2.3.0:073> OpenSSL :: OPENSSL_LIBRARY_VERSION =>「OpenSSL 1.0.1e-fips 2013年2月11日」 – loganathan

+0

@ mattにあなたのコメントを書く必要があります。そうしないと、彼はそれを見にくいでしょう。 – 7stud

答えて

0

それはPATHに関するすべてです。 PATH環境変数で指定されたディレクトリは、発行するコマンドを検索するために検索されます。したがって、rbenvはあなたのPATHの前にopensslという名前のコマンドがあるディレクトリ、すなわちrbenvのopensslのバージョンを追加する必要があります。

どうすればよいですか?

1)システムのopensslを含むディレクトリを、パスの先頭にあるrbenvディレクトリの前に移動してみてください。 .bash_profileまたは類似の一番下に:

export PATH="/path/to/openssl:$PATH" 

2)rbenvはあなたがルビーをインストールOpenSSLを含むディレクトリを指定することができます:

$ RUBY_CONFIGURE_OPTS="--with-openssl-dir=/path/to/openssl” rbenv install 2.4.0 

3)削除することができるかもしれませんrbenvがインストールしたopensslコマンドあなたはコマンドを使用して発見されたことを最初のディレクトリを見つけることができます。

$ which openssl 

しかし、ではなくコマンドを削除し、私は考えmvそれはあなたが後でそれを必要とする場合では別の名前に:

$ mv openssl rbenv_openssl 

そのディレクトリでopensslコマンドが検索されると、そのディレクトリは見つからないため、システムのopensslコマンドが見つかるまで、パス内の他のディレクトリが順番に検索されます。

rbenvのopensslの名前を変更するとrbenvが中断されますが、コマンドをmv元の名前に戻すことができます。

+0

openssl o/pは "/ usr/bin/openssl"です。 rubyをインストールするとエラーが発生する make [2]:ディレクトリ/tmp/ruby-build.20170219073346.517/ruby-2.3.1/ext/digest/md5 'を入力 md5init.cをコンパイル cc1:エラー:/ usr/bin/openssl/include:ディレクトリではありません make [2]:*** [md5init.o]エラー1 make [2]:ディレクトリ/tmp/ruby-build.20170219073346.517/ruby-2.3.1/のままにしますext/digest/md5 ' make [1]:ディレクトリ '/tmp/ruby-build.20170219073346.517/ruby-2.3.1'を残してください: make [1]:*** [ext/digest/md5/ make:*** [build-ext]エラー2 – loganathan

+0

@loganathan、情報が多すぎます。質問の最後にすべてを投稿してください。 – 7stud

+0

詳細を追加しました。ありがとう – loganathan