Excerpt
This post was originally written in 2022 for Ubuntu 22.04 but has been updated for 24.04 too
I’ve recently upgraded to Ubuntu 24.04 on my main machine and laptop. As I use a mixture of Rails versions for different apps I maintain, I needed to install Ruby 3.0, 2.7 & 2.6 alongside 3.1.
Because Ubuntu 24.04 & 22.04 come with OpenSSL 3.0, Ruby 3.0 and below don’t support this so an older version is required for these versions to be installed.
## Compiling OpenSSL
This guide assumes you’ve already got build-essential installed.
Firstly download OpenSSL 1.1.1w and extract it:
```plain text
wget https://www.openssl.org/source/openssl-1.1.1w.tar.gz
tar zxvf openssl-1.1.1w.tar.gz
```
Once extracted, we need to configure where this version will be installed. In my case, I want it in a hidden folder in my home directory ~/.openssl/version
```plain text
export OPENSSL=$HOME/.openssl/openssl-1.1.1w
cd openssl-1.1.1w
./config --prefix=$OPENSSL --openssldir=$OPENSSL
make
make test
make i
This post was originally written in 2022 for Ubuntu 22.04 but has been updated for 24.04 too
I’ve recently upgraded to Ubuntu 24.04 on my main machine and laptop. As I use a mixture of Rails versions for different apps I maintain, I needed to install Ruby 3.0, 2.7 & 2.6 alongside 3.1.
Because Ubuntu 24.04 & 22.04 come with OpenSSL 3.0, Ruby 3.0 and below don’t support this so an older version is required for these versions to be installed.
## Compiling OpenSSL
This guide assumes you’ve already got build-essential installed.
Firstly download OpenSSL 1.1.1w and extract it:
```plain text
wget https://www.openssl.org/source/openssl-1.1.1w.tar.gz
tar zxvf openssl-1.1.1w.tar.gz
```
Once extracted, we need to configure where this version will be installed. In my case, I want it in a hidden folder in my home directory ~/.openssl/version
```plain text
export OPENSSL=$HOME/.openssl/openssl-1.1.1w
cd openssl-1.1.1w
./config --prefix=$OPENSSL --openssldir=$OPENSSL
make
make test
make install
```
As this doesn’t include any certificates, I just symlink the main OpenSSL certs folder into this version like so:
```plain text
rm -rf $OPENSSL/certs
ln -s /etc/ssl/certs $OPENSSL/certs
```
## Install Ruby
Once OpenSSL 1.1.1g is installed, we can now install Ruby 3.0 and below but telling ruby-build to use this version of OpenSSL. In this example, I’m using rbenv but it should work the same way with asdf.
```plain text
# Ruby 3.0
RUBY_CONFIGURE_OPTS=--with-openssl-dir=$OPENSSL rbenv install 3.0.7
# Ruby 2.7
RUBY_CONFIGURE_OPTS=--with-openssl-dir=$OPENSSL rbenv install 2.7.8
# Ruby 2.6
RUBY_CONFIGURE_OPTS=--with-openssl-dir=$OPENSSL rbenv install 2.6.10
# Ruby 2.5
RUBY_CONFIGURE_OPTS=--with-openssl-dir=$OPENSSL rbenv install 2.5.9
```
And that’s it! You should now have older Ruby versions installed on Ubuntu 24.04 & 22.04.