🦊
WSL2からgit pull したときに「OpenSSL version mismatch.」が表示された時の対処法(?)
起きたこと
業務中にいつも通りgit pullすると、なんと見慣れないエラーが。
「OpenSSL version mismatch. Built against 30000020, you have 30400000」
最近OpenSSLをインストールしたことが関係してそうでした。
また、gitリポジトリサーバーは自社で構築したGitLabサーバーで、非常に残念なことにメンテナンスがあまりされていないため、ローカルPCとこのサーバーのOpenSSLバージョン差異によりgit pullが失敗している模様...
対処法
結論を先に書くと、.bashrcを編集して、gitコマンド実行時は古いOpenSSLを使うようにして対応しました。(Claudeありがとう)
下記を追加しました。
git() {
# 一時的に元のLD_LIBRARY_PATHを保存
local old_library_path=$LD_LIBRARY_PATH
# システムデフォルトのライブラリパスを指定
export LD_LIBRARY_PATH=/lib/x86_64-linux-gnu:/usr/lib/x86_64-linux-gnu
# gitコマンドを実行する
command git "$@"
# 環境変数を元に戻す
export LD_LIBRARY_PATH=$old_library_path
}
上記は、一時的にライブラリパスをwsl(ubuntu)デフォルトのパスに変更し、gitコマンドを実行するようにしたものです。
以降はこの対処法に至るまでの調査記録を備忘録として残します。
調査
今までOpenSSLをインストールしていなくてもgitコマンドが実行できていたので、その状態に戻すことができれば今まで通りgitコマンドが実行できると考えました。まずは今までどのOpenSSLを利用していたかを調査します。
gitの依存関係
まずはgitの依存関係を確認してみることにしました。
> ldd $(which git)
linux-vdso.so.1 (0x00007fffc3ec4000)
libpcre2-8.so.0 => /lib/x86_64-linux-gnu/libpcre2-8.so.0 (0x00007f6e20c39000)
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f6e20c1d000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f6e209f4000)
OpenSSLは見当たりません。
wslのプリインストール
次にwslにプリインストールされていないかを確認しました。
> dpkg -l | grep openssl
ii libgnutls-openssl27:amd64 3.7.3-4ubuntu1.5 amd64 GNU TLS library - OpenSSL wrapper
ii libxmlsec1-openssl:amd64 1.2.33-1build2 amd64 Openssl engine for the XML security library
ii openssl 3.0.2-0ubuntu1.18 amd64 Secure Sockets Layer toolkit - cryptographic utility
ありましたね!こいつを使うようにできればいける!と思い上記の対処法に至りました。
最後に
メンテナンス大事。
Discussion