pyinstaller, nuitka で作成した実行ファイルを別のマシンで実行するとエラーが出て動きませんでした。

具体的には以下のような GLIBC に関するエラーが表示されました。
Pyinstaller の場合
[10562] Error loading Python lib '/home/username/dist/main/libpython3.11.so.1.0': dlopen: /lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.35' not found (required by /home/username/dist/main/libpython3.11.so.1.0)
Nuitka の場合
./sample.bin: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.33' not found (required by ./sample.bin)
./sample.bin: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found (required by ./sample.bin)
./sample.bin: /lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.35' not found (required by /home/username/main.dist/libpython3.11.so.1.0)
./sample.bin: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.33' not found (required by /home/username/main.dist/libpython3.11.so.1.0)
./sample.bin: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.32' not found (required by /home/username/main.dist/libpython3.11.so.1.0)
./sample.bin: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found (required by /home/username/main.dist/libpython3.11.so.1.0)
これの回避策は、サポートしたいシステムより古いシステムでビルドを行うことだそうです。
- https://dev.to/k4ml/python-compile-standalone-executable-with-nuitka-1ml1
- https://github.com/Nuitka/Nuitka/issues/1610
私の場合、python:3.11
の Docker イメージを使ってビルドを行っていましたが、このイメージのディストリビューションは Debian 12 でした。
そこでビルドした成果物を Ubuntu 20.04 のマシンで動かすと上記のエラーが発生しました。
なので、ビルドに使用する Docker イメージを python:3.11-buster
に変更したところ、エラーなく動作するようになりました。
尚、buster
というのは Debian のコードネームのことで、Debian 10 のことだそうです。
詳細は以下を参照してください。