kariaの日記 @ Alice::Diary

ノリツッコミの鳩子がはてなブログ書いちゃうよ

Amazon Linux 2023とRuby3.0とOpenSSL 3

Amazon Linux 2使いの皆さんはもうAmazon Linux 2023への移行を済ませただろうか。私はまだだ。もうそろそろ移行を開始したいところではあるが、どうもOpenSSLを巡ってかなりややこしい状態になっている。

現状の整理

AmazonLinux2/2023と、デフォルトでインストールされているOpenSSLの関係は以下のようになっている。

OS OpenSSL
Amazon Linux 2 OpenSSL 1.0.2 *1
Amazon Linux 2023 OpenSSL 3

Amazon Linux 2023への移行を早々に進めていきたいところではあるのだが、動作させるアプリケーションがRuby3.0である場合に問題となる。

なぜなら、Ruby3.0はOpenSSL 3をサポートしないからである。このためOpenSSL 3しか存在しないAmazon Linux 2023にはRuby3.0を直接入れることができない。この問題はUbuntu 22.04でも同様のようだ。

www.hsbt.org

戦略

一旦OSはAmazon Linux 2のままとしておき、rbenv & ruby-build経由でインストールすることとした。もしruby-buildがうまくいかなければ、ruby-buildを最新版にすること。ruby-build 20220710以降でなければ、以下のPRが含まれていないためだ。

github.com

先の見通し

これでRuby3.0のインストールは何とかなった。だが、そもそもOSがサポートするOpenSSLが1.0.2なのは早急になんとかしたい。OpenSSL 1.1.1ですら2023/09/11でEOLを迎えるようで、さっさとOpenSSL 3系の世界に行かないと。

www.openssl.org

Ruby3.1以降はOpenSSL 3をサポートしたので、アプリケーションをRuby3.1以上に対応させた上で大手を振ってAmazon Linux 2023に移行することにしよう。どうせRuby3.0のサポートももうすぐ終わってしまうことだし。

余談

早くdockerにしろという声が聞こえてくるが、深淵な理由でローカルにもRubyを入れる必要があったため、この記事に書いた内容を調査するに至った。この辺りは語る機会があればまた今度。

ちなみにpythonのurllib3モジュールが、最近OpenSSL 1.1.1未満のサポートを切った。

github.com

この影響を受けてansibleのdockerモジュールがAmazon Linux 2上では動作しなくなった。つまり、dockerのホストOSとしてもAmazon Linux 2は適切ではなくなってきている。

*1:Amazon Linux 2は yum install openssl11 でOpenSSL 1.1.1のインストールが可能ではあるが、ややこしいので省略した