🦊

WSL2からgit pull したときに「OpenSSL version mismatch.」が表示された時の対処法(?)

2025/01/08に公開

起きたこと

業務中にいつも通り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