Published On: 1 April 2023Last Updated: 1 April 2023

RVM is a great tool to manage multiple versions of Ruby when working on projects.

I was working on a Rails project which was using Ruby 2.7.5, so tried to install it using RVM’s standard installation process: rvm install 2.7.5. It fails, and in the log file you can see this:

+ command gem install /home/nilesh/.rvm/gem-cache/gem-wrappers-1.4.0.gem --local --no-document
ERROR:  Loading command: install (LoadError)
        cannot load such file -- openssl
ERROR:  While executing gem ... (NoMethodError)
    undefined method `invoke_with_build_args' for nil:NilClass

After a bit of digging around in the issues mentioned on Github of RVM and rbenv, I found that Ruby 2.7.5 needs OpenSSL 1.1, but Ubuntu 22.04 comes with OpenSSL 3.0. One reference: Failed to build ruby 2.7.5 on ubuntu 22.04.

And thus, the solution:

wget https://www.openssl.org/source/openssl-1.1.1t.tar.gz
tar xf openssl-1.1.1t.tar.gz
cd openssl-1.1.1t
./config --prefix=/usr/local/openssl1.1.1t --openssldir=/usr/local/openssl1.1.1t/etc
make -j$(nproc)
make -j$(nproc) install

After installation, configure the custom OpenSSL installation to point to the system CA certificates to avoid downloading the CA certificates separately:

cd /usr/local/openssl1.1.1t/etc
rmdir certs
ln -s /etc/ssl/certs certs

Now, for Ruby 2.7.5 installation:

rvm install 2.7.5 --with-openssl-dir=/usr/local/openssl1.1.1t

This installs successfully. Enjoy working on your project 😀

2 Comments

  1. Anonymous Rubyist 7 August 2023 at 6:10 PM - Reply

    Thanks! I ended up in the same scenario after a 22.04 upgrade, so I appreciate walking me through this.

  2. Anonymous 11 January 2024 at 10:14 PM - Reply

    Thanks a lot, that saved me 🙂

Consider sharing your thoughts about what you read

Share

Get new posts by email