メンテナンス・トラブルシュート - Python - python311 → python312


 クラウディア


1. 概要
2. 状況
3. /etc/make.conf 編集
4. アップグレード
5. 依存パッケージ

1. 概要

 表題のとおりのアップグレードを行おうと思います。

2. 状況

 2026年1月13日時点で、下記の状況にあります。

ls -lhd /usr/ports/lang/python*

drwxr-xr-x 2 root wheel 512 10月 20  2022 /usr/ports/lang/python
drwxr-xr-x 2 root wheel 512  1月  5 07:11 /usr/ports/lang/python-doc-html
drwxr-xr-x 2 root wheel 512 10月 20  2022 /usr/ports/lang/python-doc-pdf-a4
drwxr-xr-x 2 root wheel 512 10月 20  2022 /usr/ports/lang/python-doc-text
drwxr-xr-x 2 root wheel 512 11月  2  2023 /usr/ports/lang/python-mode.el
drwxr-xr-x 2 root wheel 512  4月 10  2025 /usr/ports/lang/python-tools
drwxr-xr-x 2 root wheel 512 10月 20  2022 /usr/ports/lang/python2
drwxr-xr-x 3 root wheel 512  3月 11  2025 /usr/ports/lang/python27
drwxr-xr-x 2 root wheel 512  6月 19  2024 /usr/ports/lang/python3
drwxr-xr-x 3 root wheel 512 11月  4 07:16 /usr/ports/lang/python310
drwxr-xr-x 3 root wheel 512 10月 17 07:32 /usr/ports/lang/python311
drwxr-xr-x 3 root wheel 512  1月  5 07:11 /usr/ports/lang/python312
drwxr-xr-x 3 root wheel 512 12月 11 07:13 /usr/ports/lang/python313
drwxr-xr-x 2 root wheel 512 11月  5 07:23 /usr/ports/lang/python313t
drwxr-xr-x 3 root wheel 512  1月  9 07:20 /usr/ports/lang/python314
 そろそろ、「python311」から「python312」への潮時、と思った次第です。

3. /etc/make.conf 編集

 ここから、いつも手戻りが発生しますが・・・今回はどうかな?

vi /etc/make.conf
 現在、下記を記述している。

DEFAULT_VERSIONS+=python=3.11 python3=3.11
 の代わりに下記を記述します。

DEFAULT_VERSIONS+=python=3.12 python3=3.12

4. アップグレード


pkg set -o lang/python311:lang/python312
 下記を訊いてきますので。

Change origin from lang/python311 to lang/python312 for python311-3.11.14? [y/N]:
 y Enter で応えます。

env BATCH=yes portupgrade -f python311 -o lang/python312
 これで、「python」本体は、「python3.11」から「python3.12」へアップグレードされます。  シンボリックリンクは、はりなおします。  「root」ユーザ権限で。

rm /usr/local/bin/python
ln -s /usr/local/bin/python3.12 /usr/local/bin/python
 確認。

python --version

Python 3.12.12

5. 依存パッケージ

 他の「ports」がどれくらいあるかちゅうと。

pkg version -v | grep py311 | wc -l

     117
 117個もありますな。  で。

pkg version -v | grep py311

py311-Babel-2.17.0_1               =   up-to-date with index
py311-CommonMark-0.9.1_2           =   up-to-date with index
py311-Jinja2-3.1.6                 =   up-to-date with index

・・・	略	・・・

py311-typogrify-2.1.0              =   up-to-date with index
py311-urllib3-2.6.2,1              =   up-to-date with index
py311-wheel-0.45.1                 =   up-to-date with index
 ここからは、やっちゃだめ。  これらを再インストールします。  まず・・・。

env BATCH=yes portmaster -r python

===>>> pkg-message for python312-3.12.12_3
On install:
Note that some standard Python modules are provided as separate ports
as they require additional dependencies. They are available as:

py312-gdbm       databases/py-gdbm@py312
py312-sqlite3    databases/py-sqlite3@py312
py312-tkinter    x11-toolkits/py-tkinter@py312

===>>> Done displaying pkg-message files
 q で抜けます。  この後、「ChatGPT」軍曹にのせられて。

pkg delete -y 'py311-*'
 しちゃったマシンがありましたが、これは大失敗、インストール済のモジュールがぐちゃぐちゃになってしまいました。  地道にやるしかないようです。  結局、「python」に依存する多くのプログラムがアンインストールされてしまって、再インストールするのに丸一日かかっちゃいました。  ここまで、やっちゃだめです。  以下の順に。

/usr/ports/devel/py-build
/usr/ports/devel/py-setuptools
/usr/ports/devel/py-wheel
/usr/ports/devel/py-trove-classifiers
/usr/ports/net/py-urllib3
/usr/ports/converters/py-webencodings
/usr/ports/textproc/py-smartypants
/usr/ports/textproc/py-typogrify
/usr/ports/devel/py-typing-extensions
/usr/ports/security/py-truststore
/usr/ports/lang/cython3
/usr/ports/net/py-trio
/usr/ports/devel/py-babel
/usr/ports/textproc/py-towncrier
/usr/ports/devel/py-toolz
/usr/ports/textproc/py-toml
/usr/ports/textproc/py-sphinxcontrib-serializinghtml
/usr/ports/textproc/py-sphinxcontrib-qthelp
/usr/ports/textproc/py-sphinxcontrib-jsmath
/usr/ports/textproc/py-sphinxcontrib-htmlhelp
/usr/ports/textproc/py-sphinxcontrib-devhelp
/usr/ports/textproc/py-sphinxcontrib-applehelp
/usr/ports/textproc/py-sphinx_rtd_theme
/usr/ports/textproc/py-markdown
/usr/ports/textproc/py-sphinx-markdown-tables
/usr/ports/www/py-soupsieve
/usr/ports/devel/py-sortedcontainers
/usr/ports/net/py-socksio
/usr/ports/textproc/py-snowballstemmer
/usr/ports/devel/py-sniffio
/usr/ports/devel/py-six
/usr/ports/devel/py-setuptools-rust
/usr/ports/devel/py-semantic-version
/usr/ports/devel/py-pyyaml
/usr/ports/devel/py-pytz
/usr/ports/textproc/py-python-augeas
/usr/ports/devel/meson
/usr/ports/textproc/gtk-doc
/usr/ports/textproc/py-pygments
/usr/ports/devel/py-pytest
/usr/ports/devel/meson-python
/usr/ports/math/py-numpy
/usr/ports/lang/cython
/usr/ports/textproc/py-pystemmer
/usr/ports/net/py-pysocks
/usr/ports/devel/py-pyproject-metadata
/usr/ports/devel/py-pyproject-hooks
/usr/ports/mail/py-pymilter
/usr/ports/www/py-pylsqpack
/usr/ports/devel/py-pycparser
/usr/ports/devel/py-pyasn1-modules
/usr/ports/devel/py-pyasn1
/usr/ports/sysutils/py-ptyprocess
/usr/ports/databases/py-psycopg2
/usr/ports/devel/py-poetry-core
/usr/ports/devel/py-pluggy
/usr/ports/devel/py-pathspec
/usr/ports/devel/py-parsedatetime
/usr/ports/devel/py-packaging
/usr/ports/devel/py-outcome
/usr/ports/devel/py-multipledispatch
/usr/ports/textproc/py-mdurl
/usr/ports/devel/py-maturin
/usr/ports/textproc/py-markupsafe
/usr/ports/devel/py-lxml
/usr/ports/devel/py-libevdev
 ここまでやって、これ以降は、下記の要領でアップロードいたしました。

env BATCH=yes portupgrade -f py311-... -o py312-...
 地道でもこれが一番、確実なような気がします。  今度、この一連の流れをスクリプト化したいな・・・。

EaseUS
AbemaTV 無料体験
サウンドハウス