ぶていのログでぶログ

思い出したが吉日

Ubuntu22.04でRubyのERROR: OpenSSL::PKey::PKeyError: rsa#set_key= is incompatible with OpenSSL 3.0を回避する

Ubuntu22.04からOpenSSLが3.0になった。 OpenSSL3.0には後方互換があるようだが、いくつかのライブラリではうまく動かない場合がある。 例えば、Rubyのnet-sshである。 この記事のタイトルにあるとおり、ERROR: OpenSSL::PKey::PKeyError: rsa#set_key= is incompatible with OpenSSL 3.0 というエラーが出てしまう。 幸いながらnet-sshの7.0.0以降で対応しているので、bundle update net-sshすればたいていの場合解決するだろう。 しかし、net-sshのアップデートが容易に行えない場面もあると思う、というかあった。 そこで私が解決した手法についてまとめておく。

前提条件

  • Ubuntu 22.04をWSL2上で動かしている
    • 生のUbuntu22.04でも同じ方法で回避できると思う
  • asdfを使ってRubyをインストールしている
    • 再ビルドが必要なのでUbuntu公式パッケージだとめんどくさいかも
    • asdfじゃなくてもruby-buildを内部的に使っているパッケージ管理ソフトなら同じことができると思う

手順

大したことはしていないので箇条書き。

まとめ

openssl-1.1なパッケージを一時的にインストールすることで件のエラーは回避することができた。 しかし、Rubyのバージョンアップを行うたびにこの手順を踏むのは多少めんどくさい。 素直にnet-sshをアップデートするか、Dockerイメージを作るのが結局手間が少ないのかもしれない。