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

EaseUS
AbemaTV 無料体験