Ubuntu22.04ではRuby3.1未満はビルドできない
まとめ
Ubuntu 22.04 には OpenSSL 3 しか存在しないため Ruby 3.1 未満のバージョンはビルドできない問題 - HsbtDiary
Ubuntu 22.04 Jammy からは OpenSSL 3.x が標準で使用されるようになった
一方でRuby 3.1 未満は OpenSSL 1.1 を要求するのでそれからビルドが必要になる
もし OpenSSL 3.x が入っている状態で Ruby をビルドしたならば HTTPS 通信などができなくなっているはず
code:sh
# gem install bundler
ERROR: While executing gem ... (Gem::Exception)
OpenSSL is not available. Install OpenSSL and rebuild Ruby (preferred) or use non-HTTPS sources
Ubuntu22.04でOpenSSL1.1をインストールするには?
https://askubuntu.com/questions/1403837/how-do-i-use-openssl-1-1-1-in-ubuntu-22-04
OpenSSL 1.1をビルドすることは聞くところによると難しいとされている
一方で Ubuntu 21 Impish 向けにビルドされたバイナリは実行可能であるようだ
インストールにあたっては、Ubuntu 22.04 に含まれる OpenSSL 3.x をダウングレードすることになる
そのため関連するパッケージの再ビルドが場合によっては必要になることに注意
Static Link されていればそのままで動いたりすることもあるが、基本的には再ビルドが必要
https://www.openssl.org/blog/blog/2021/09/07/OpenSSL3.Final/
code:sh
# パッケージを入手
wget http://security.ubuntu.com/ubuntu/pool/main/o/openssl/openssl_1.1.1f-1ubuntu2.16_amd64.deb
wget http://security.ubuntu.com/ubuntu/pool/main/o/openssl/libssl-dev_1.1.1f-1ubuntu2.16_amd64.deb
wget http://security.ubuntu.com/ubuntu/pool/main/o/openssl/libssl1.1_1.1.1f-1ubuntu2.16_amd64.deb
# インストールする
sudo -s
dpkg -i libssl1.1_1.1.1f-1ubuntu2.16_amd64.deb
dpkg -i libssl-dev_1.1.1f-1ubuntu2.16_amd64.deb
dpkg -i openssl_1.1.1f-1ubuntu2.16_amd64.deb
# openssl version
OpenSSL 1.1.1f 31 Mar 2020
Ruby2.7〜3.2までのEOLは?
https://endoflife.date/ruby
Ruby 2.7: 2023-03-31 まで
Ruby 3.0: 2024-03-31 まで
Ruby 3.1: 2025-03-31 まで
Ruby 3.2: 2026-03-31 まで
https://gyazo.com/eff22fe386462c5005c8d8284ceff877