
用意したもの
Debian 12を最小構成でセットアップしたVM
amd64(x86_64)、arm64(aarch64)どちらでも
手順
パッケージ追加
sudo apt update
sudo apt upgrade
sudo apt install curl build-essential libssl-dev zlib1g-dev -y
zlib1g-dev(zlib1gではダメ)が無いとaltinstallで以下のエラーが出た。
Creating directory /usr/local/share/man/man1
/usr/bin/install -c -m 644 ./Misc/python.man \
/usr/local/share/man/man1/python3.12.1
if test "xupgrade" != "xno" ; then \
case upgrade in \
upgrade) ensurepip="--altinstall --upgrade" ;; \
install|*) ensurepip="--altinstall" ;; \
esac; \
./python -E -m ensurepip \
$ensurepip --root=/ ; \
fi
Traceback (most recent call last):
File "<frozen zipimport>", line 518, in _get_decompress_func
ModuleNotFoundError: No module named 'zlib'
makeすると最後に以下のメッセージが出るので、必要なものがあればaptでパッケージ追加しておく。
The following modules are *disabled* in configure script:
_sqlite3
The necessary bits to build these optional modules were not found:
_bz2 _ctypes _ctypes_test
_curses _curses_panel _dbm
_gdbm _lzma _tkinter
_uuid nis readline
To find the necessary bits, look in configure.ac and config.log.
| モジュール | 対応するaptパッケージ |
|---|---|
| _sqlite3 | libsqlite3-dev |
| _bz2 | libbz2-dev |
| _ctypes | libffi-dev |
| _ctypes_test | libffi-dev |
| _curses | libncurses-dev |
| _curses_panel | libncurses-dev |
| _dbm | libgdbm-compat-dev |
| _gdbm | libgdbm-dev |
| _lzma | liblzma-dev |
| _tkinter | tk-dev |
| _uuid | uuid-dev |
| nis | 不明、今時NISは要らないと思う… |
| readline | libreadline-dev |
全部追加するならこれ
sudo apt install libsqlite3-dev libbz2-dev libffi-dev libncurses-dev libgdbm-compat-dev libgdbm-dev liblzma-dev tk-dev uuid-dev libreadline-dev
ダウンロード
cd ~
curl -OL https://www.python.org/ftp/python/3.12.2/Python-3.12.2.tar.xz
tgzより7MB小さいのでtar.xzにした
展開
tar xf Python-3.12.2.tar.xz
configure
公式ドキュメントのrecommended↓に従ってオプション追加
Configuring Python using –enable-optimizations –with-lto (PGO + LTO) is recommended for best performance. The experimental –enable-bolt flag can also be used to improve performance.
cd Python-3.12.2
./configure --enable-optimizations --with-lto
build
make -j$(nproc)
install
sudo make altinstall
Python 3.11との共存
Debian 12はデフォルトでPython 3.11がインストールされていて /usr/bin/python3 は python3.11 へのシンボリックリンクとなっている。update-alternatives で切り替えられるようにする。
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.11 1
sudo update-alternatives --install /usr/bin/python3 python3 /usr/local/bin/python3.12 2
python3 --version