Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

OpenSSL error installing Ruby 2.1.x and 2.3.x on Archlinux with ruby-install/ruby-build

I've had some problems building older versions of Ruby with ruby-install on Archlinux. I suspect the same is happening with ruby-build. I am seeing the following after trying to install Ruby 2.1.5, 2.1.6, 2.3.0, 2.3.1, 2.3.4.

/usr/include/openssl/asn1_mac.h:10:2: error: #error "This file is obsolete; please update your software."
#error "This file is obsolete; please update your software."

or

ossl_ssl.c:465:38: error: ‘CRYPTO_LOCK_SSL_SESSION’ undeclared
like image 745
PhilT Avatar asked May 22 '17 14:05

PhilT


1 Answers

If not already installed you need Open SSL 1.0:

pacman -S openssl-1.0

For installing Ruby 2.3.x the following is needed:

PKG_CONFIG_PATH=/usr/lib/openssl-1.0/pkgconfig ruby-install ruby 2.3.0

I installed 2.3.0, 2.3.1 and 2.3.4 this way.

I'm using ruby-install but the same probably applies to ruby-build (rbenv).

For Ruby 2.1.x and 2.2.x a patch is also needed:

curl -fsSL https://gist.github.com/mislav/055441129184a1512bb5.txt > ruby2.x-openssl.patch
PKG_CONFIG_PATH=/usr/lib/openssl-1.0/pkgconfig ruby-install -p ruby2.x-openssl.patch ruby 2.1.5

I installed 2.1.5 and 2.1.6 this way.

For older versions of Ruby (< 2) a different patch may be needed which can be downloaded here:

https://github.com/rbenv/ruby-build/wiki#openssl-sslv3_method-undeclared-error

Corrupted memory and Segfaults when compiling ruby

If you get segfaults when compiling, it might be because of the latest version of gcc. A workaround is to install an older version and then specify it to ruby-install:

sudo pacman -S gcc5
CC=/usr/sbin/gcc-5 PKG_CONFIG_PATH=/usr/lib/openssl-1.0/pkgconfig ruby-install ruby 2.3.0

Reference: https://github.com/rbenv/ruby-build/issues/1092

like image 155
PhilT Avatar answered Nov 15 '22 18:11

PhilT