用意したもの
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