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」に依存する多くのプログラムがアンインストールされてしまって、再インストールするのに丸一日かかっちゃいました。