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

2

10

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
Melisa answered 22/5, 2017 at 14:50 Comment(0)
M
26

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

Melisa answered 22/5, 2017 at 14:50 Comment(4)
Once openssl-1.0 is installed the environment variable works with rbenv too, e.g. PKG_CONFIG_PATH=/usr/lib/openssl-1.0/pkgconfig rbenv install 2.3.0.Radii
That's what I meant by ruby-build. Thanks for confirming @RadiiMelisa
Unless I am mistaken, updating pacman's package cache without also updating your packages can lead to an inconsistent state. You should be using either pacman -Syyu openssl-1.0 or pacman -S openssl-1.0.Hemicrania
You are indeed correct. I've got aliases setup so don't normally run it bare. Thanks!Melisa
B
0

Same worked for me with Ruby 2.6 and OpenSSL 1.1 using rvm:

pacman --sync --needed openssl-1.1
PKG_CONFIG_PATH=/usr/lib/openssl-1.1/pkgconfig rvm install 2.6
Babin answered 7/2, 2023 at 13:3 Comment(0)

© 2022 - 2025 — McMap. All rights reserved.