Rah*_*put 13 c ruby openssl asdf
我在使用 asdf 或 rvm 编译 ruby-2.7.1 时遇到此问题。
\n它甚至还会导致 erlang 安装出现问题。
\n错误可能是
\ngenerating x86_64-linux-fake.rb\nx86_64-linux-fake.rb updated\n./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" --rdoc-output=".ext/rdoc" --html-output=".ext/html"\n/tmp/ruby-build.20220515222647.5893.R2e2fF/ruby-2.7.1/lib/rubygems/core_ext/kernel_require.rb:92:in `require': libssl.so.1.1: cannot open shared object file: No such file or directory - /tmp/ruby-build.20220515222647.5893.R2e2fF/ruby-2.7.1/.ext/x86_64-linux/openssl.so (LoadError)\n from /tmp/ruby-build.20220515222647.5893.R2e2fF/ruby-2.7.1/lib/rubygems/core_ext/kernel_require.rb:92:in `require'\n from /tmp/ruby-build.20220515222647.5893.R2e2fF/ruby-2.7.1/.ext/common/openssl.rb:13:in `<top (required)>'\n from /tmp/ruby-build.20220515222647.5893.R2e2fF/ruby-2.7.1/lib/rubygems/core_ext/kernel_require.rb:92:in `require'\n from /tmp/ruby-build.20220515222647.5893.R2e2fF/ruby-2.7.1/lib/rubygems/core_ext/kernel_require.rb:92:in `require'\n from /tmp/ruby-build.20220515222647.5893.R2e2fF/ruby-2.7.1/lib/rubygems/security.rb:12:in `<top (required)>'\n from /tmp/ruby-build.20220515222647.5893.R2e2fF/ruby-2.7.1/lib/rubygems/core_ext/kernel_require.rb:92:in `require'\n from /tmp/ruby-build.20220515222647.5893.R2e2fF/ruby-2.7.1/lib/rubygems/core_ext/kernel_require.rb:92:in `require'\n from /tmp/ruby-build.20220515222647.5893.R2e2fF/ruby-2.7.1/lib/rubygems/package.rb:44:in `<top (required)>'\n from /tmp/ruby-build.20220515222647.5893.R2e2fF/ruby-2.7.1/lib/rubygems/core_ext/kernel_require.rb:92:in `require'\n from /tmp/ruby-build.20220515222647.5893.R2e2fF/ruby-2.7.1/lib/rubygems/core_ext/kernel_require.rb:92:in `require'\n from /tmp/ruby-build.20220515222647.5893.R2e2fF/ruby-2.7.1/lib/rubygems/installer.rb:11:in `<top (required)>'\n from /tmp/ruby-build.20220515222647.5893.R2e2fF/ruby-2.7.1/lib/rubygems/core_ext/kernel_require.rb:92:in `require'\n from /tmp/ruby-build.20220515222647.5893.R2e2fF/ruby-2.7.1/lib/rubygems/core_ext/kernel_require.rb:92:in `require'\n from ./tool/rbinstall.rb:713:in `<module:RbInstall>'\n from ./tool/rbinstall.rb:649:in `<main>'\nmake: *** [uncommon.mk:373: do-install-all] Error 1\n
Run Code Online (Sandbox Code Playgroud)\n或者
\nossl_pkey_rsa.c:877:58: error: \xe2\x80\x98RSA_SSLV23_PADDING\xe2\x80\x99 undeclared (first use in this function); did you mean \xe2\x80\x98RSA_NO_PADDING\xe2\x80\x99?\n 877 | #define DefRSAConst(x) rb_define_const(cRSA, #x, INT2NUM(RSA_##x))\n | ^~~~\n../.././include/ruby/ruby.h:262:33: note: in definition of macro \xe2\x80\x98RB_INT2FIX\xe2\x80\x99\n 262 | #define RB_INT2FIX(i) (((VALUE)(i))<<1 | RUBY_FIXNUM_FLAG)\n | ^\n../.././include/ruby/ruby.h:1609:20: note: in expansion of macro \xe2\x80\x98RB_INT2NUM\xe2\x80\x99\n 1609 | #define INT2NUM(x) RB_INT2NUM(x)\n | ^~~~~~~~~~\nossl_pkey_rsa.c:877:50: note: in expansion of macro \xe2\x80\x98INT2NUM\xe2\x80\x99\n 877 | #define DefRSAConst(x) rb_define_const(cRSA, #x, INT2NUM(RSA_##x))\n | ^~~~~~~\nossl_pkey_rsa.c:942:5: note: in expansion of macro \xe2\x80\x98DefRSAConst\xe2\x80\x99\n 942 | DefRSAConst(SSLV23_PADDING);\n | ^~~~~~~~~~~\nossl_pkey_rsa.c:877:58: note: each undeclared identifier is reported only once for each function it appears in\n 877 | #define DefRSAConst(x) rb_define_const(cRSA, #x, INT2NUM(RSA_##x))\n | ^~~~\n../.././include/ruby/ruby.h:262:33: note: in definition of macro \xe2\x80\x98RB_INT2FIX\xe2\x80\x99\n 262 | #define RB_INT2FIX(i) (((VALUE)(i))<<1 | RUBY_FIXNUM_FLAG)\n | ^\n../.././include/ruby/ruby.h:1609:20: note: in expansion of macro \xe2\x80\x98RB_INT2NUM\xe2\x80\x99\n 1609 | #define INT2NUM(x) RB_INT2NUM(x)\n | ^~~~~~~~~~\nossl_pkey_rsa.c:877:50: note: in expansion of macro \xe2\x80\x98INT2NUM\xe2\x80\x99\n 877 | #define DefRSAConst(x) rb_define_const(cRSA, #x, INT2NUM(RSA_##x))\n | ^~~~~~~\nossl_pkey_rsa.c:942:5: note: in expansion of macro \xe2\x80\x98DefRSAConst\xe2\x80\x99\n 942 | DefRSAConst(SSLV23_PADDING);\n | ^~~~~~~~~~~\nossl_pkey.c: At top level\n
Run Code Online (Sandbox Code Playgroud)\n我尝试使用 apt-get 安装 openssl 版本 1.1,但它不起作用。
\nJon*_*ins 11
当我在编译 Ruby 时遇到 openssl 问题时,我通常会使用这样的解决方案。如果可以的话,我不想弄乱操作系统的安装版本,而且我不使用 RVM 之类的东西。
wget https://www.openssl.org/source/openssl-1.1.1q.tar.gz
Run Code Online (Sandbox Code Playgroud)
tar xvzf openssl-1.1.1q.tar.gz
cd openssl-1.1.1q
mkdir -p $HOME/lib/openssl
./config --prefix=$HOME/lib/openssl
make
make install
Run Code Online (Sandbox Code Playgroud)
cp /etc/ssl/certs/* $HOME/lib/openssl/ssl/certs
Run Code Online (Sandbox Code Playgroud)
tar xvzf ruby-2.7.1.tar.gz
cd ruby-2.7.1
./configure --prefix=$HOME/.rubies/ruby-2.7.1 --with-openssl-dir=$HOME/lib/openssl
make
make install
Run Code Online (Sandbox Code Playgroud)
Openssl 最近删除了对CVE-2021-23839RSA_SSLV23_PADDING
之后的支持
最好的选择是安装最新版本的 ruby,它应该支持此功能,但我必须安装这个特定版本的 ruby。以下是对我有帮助的事情。
这个答案确实对我有帮助。 https://askubuntu.com/questions/1126893/how-to-install-openssl-1-1-1-and-libssl-package
最后,我必须将此 openssl.so.1.1 文件(编译后生成)复制到 lib 文件夹。
sudo cp openssl.so.1.1 /usr/local/lib/
或者
sudo cp openssl.so.1.1 /usr/local/lib64/
然后export LD_LIBRARY_PATH=/usr/local/lib:/usr/local/lib64
和sudo ldconfig
现在尝试运行asdf install ruby-2.7.1
它应该可以工作。