1. 概要
2022年3月31日ことです。
特に促されてはいないものの、別途、問題も発生しているので、ついでに、「python」のバージョンをあげようと思った次第です。
で、現在の「python」のバージョンをみてみると
$ python --version
Python 3.7.13
あれ?前ページの要領で、「python3.8」へアップグレードしたつもりでいたのですが・・・まぁいいや。
で、アップグレードするのは何にしようかと思って見てみると
$ ls -dl /usr/ports/lang/python*
/usr/ports/lang/python
/usr/ports/lang/python-doc-html
/usr/ports/lang/python-doc-pdf-a4
/usr/ports/lang/python-doc-pdf-letter
/usr/ports/lang/python-doc-text
/usr/ports/lang/python-mode.el
/usr/ports/lang/python-tools
/usr/ports/lang/python2
/usr/ports/lang/python27
/usr/ports/lang/python3
/usr/ports/lang/python310
/usr/ports/lang/python311
/usr/ports/lang/python37
/usr/ports/lang/python38
/usr/ports/lang/python39
とまぁ、最新は「python3.11」らしいが・・・。
「ruby」でリビジョンが、1桁から2桁になったときに、痛い目をみているので、いまんとこは1桁に収めたい・・・。
ちゅうことで、「python3.9」へアップグレードしようと思います。
2. /etc/make.conf 編集
vi /etc/make.conf
DEFAULT_VERSIONS+=python=3.7 python3=3.7
を書き換えます。
DEFAULT_VERSIONS+=python=3.9 python3=3.9
3. アップグレード
portupgrade -f python37 -o lang/python39
pkg set -o lang/python37:lang/python39
2つ目のコマンドは
Change origin from lang/python37 to lang/python39 for python37-3.7.13? [y/N]:
ときいてきますので、y Enter で応えます。
と、ここまでやって、前ページを見なおして、まずいのがわかりました。
vi /etc/make.conf
で、いったん
DEFAULT_VERSIONS+=python=3.9 pythonr3=3.9
をコメントアウトして
cd /usr/ports/lang/python3
make deinstall clean
vi /etc/make.conf
コメントアウトしたものを復活させて
(オプションはデフォルトのままにしています)
cd /usr/ports/lang/python39
make deinstall clean
make
make install
もう一回。
portupgrade -rR python
確認します。
$ pkg version -v | grep python
python27-2.7.18_1 = up-to-date with index
python37-3.7.13 = up-to-date with index
python39-3.9.12 = up-to-date with index
前回に比べて、すっきりしております。
シンボリックリンクは、はりなおさないとまずいようです。
「root」ユーザ権限で。
rm /usr/local/bin/python
ln -s /usr/local/bin/python3.9 /usr/local/bin/python
ログインユーザで確認します。
$ python --version
Python 3.9.12
4. 依存パッケージ
後は、他のパッケージのアップグレードの際、競合や衝突が発生する都度、対処していくしかないかな・・・。
まずは、「python3.7」でインストールしていたパッケージを探して
$ pkg version -v | grep py37
py37-Babel-2.9.1 ? orphaned: devel/py-babel
root@ns.sing.ne.jp /usr/ports/devel/py-pip > pkg version -v | grep py37
py37-Babel-2.9.1 ? orphaned: devel/py-babel
py37-CommonMark-0.9.1 ? orphaned: textproc/py-CommonMark
py37-Jinja2-3.0.1 ? orphaned: devel/py-Jinja2
py37-acme-1.22.0,1 ? orphaned: security/py-acme
py37-alabaster-0.7.12 ? orphaned: textproc/py-alabaster
py37-appdirs-1.4.4 ? orphaned: devel/py-appdirs
py37-beaker-1.11.0 ? orphaned: www/py-beaker
py37-beautifulsoup-4.10.0 ? orphaned: www/py-beautifulsoup
py37-certbot-1.22.0,1 ? orphaned: security/py-certbot
py37-certifi-2021.10.8 ? orphaned: security/py-certifi
py37-cffi-1.15.0 ? orphaned: devel/py-cffi
py37-chardet-4.0.0,1 ? orphaned: textproc/py-chardet
py37-colorful-0.5.4 ? orphaned: devel/py-colorful
py37-configargparse-1.5.3 ? orphaned: devel/py-configargparse
py37-configobj-5.0.6_1 ? orphaned: devel/py-configobj
py37-country-22.3.5 ? orphaned: devel/py-country
py37-cryptography-3.3.2 ? orphaned: security/py-cryptography
py37-cryptography-vectors-3.4.8 ? orphaned: security/py-cryptography-vectors
py37-cython-0.29.28 = up-to-date with index
py37-distro-1.7.0 ? orphaned: sysutils/py-distro
py37-docutils-0.17.1,1 ? orphaned: textproc/py-docutils
py37-future-0.18.2 ? orphaned: devel/py-future
py37-google-i18n-address-2.5.0 ? orphaned: devel/py-google-i18n-address
py37-html5lib-1.0.1 ? orphaned: www/py-html5lib
py37-idna-2.10 ? orphaned: dns/py-idna
py37-imagesize-1.3.0 ? orphaned: graphics/py-imagesize
py37-intervaltree-3.1.0 ? orphaned: devel/py-intervaltree
py37-josepy-1.12.0 ? orphaned: security/py-josepy
py37-kitchen-1.2.6 ? orphaned: devel/py-kitchen
py37-libxml2-2.9.13_1 ? orphaned: textproc/py-libxml2
py37-lxml-4.8.0 ? orphaned: devel/py-lxml
py37-mako-1.0.14_1 ? orphaned: textproc/py-mako
py37-markupsafe-2.1.0 ? orphaned: textproc/py-markupsafe
py37-numpy-1.20.3,1 = up-to-date with index
py37-olefile-0.46 ? orphaned: devel/py-olefile
py37-openssl-20.0.1 ? orphaned: security/py-openssl
py37-packaging-21.3 ? orphaned: devel/py-packaging
py37-parsedatetime-2.6 ? orphaned: devel/py-parsedatetime
py37-pillow-8.2.0_1 ? orphaned: graphics/py-pillow
py37-pip-20.3.4 ? orphaned: devel/py-pip
py37-prettyprinter-0.18.0_1 ? orphaned: devel/py-prettyprinter
py37-psycopg2-2.9.3 ? orphaned: databases/py-psycopg2
py37-pycparser-2.21 ? orphaned: devel/py-pycparser
py37-pyflakes-2.4.0 ? orphaned: devel/py-pyflakes
py37-pygments-2.9.0 ? orphaned: textproc/py-pygments
py37-pyparsing-3.0.7 ? orphaned: devel/py-pyparsing
py37-pyrfc3339-1.1 ? orphaned: devel/py-pyrfc3339
py37-pysocks-1.7.1 ? orphaned: net/py-pysocks
py37-pystemmer-2.0.1 ? orphaned: textproc/py-pystemmer
py37-pytest-runner-5.3.1 ? orphaned: devel/py-pytest-runner
py37-pytz-2021.3,1 ? orphaned: devel/py-pytz
py37-recommonmark-0.5.0_2 ? orphaned: textproc/py-recommonmark
py37-repoze.sphinx.autointerface-0.8 ? orphaned: devel/py-repoze.sphinx.autointerface
py37-requests-2.25.1 ? orphaned: www/py-requests
py37-requests-toolbelt-0.9.1_1 ? orphaned: www/py-requests-toolbelt
py37-setuptools-57.0.0 = up-to-date with index
py37-setuptools_scm-6.4.2 ? orphaned: devel/py-setuptools_scm
py37-six-1.16.0 ? orphaned: devel/py-six
py37-snowballstemmer-2.2.0 ? orphaned: textproc/py-snowballstemmer
py37-sortedcontainers-2.3.0 ? orphaned: devel/py-sortedcontainers
py37-soupsieve-2.0.1 ? orphaned: www/py-soupsieve
py37-sphinx-4.3.1,1 ? orphaned: textproc/py-sphinx
py37-sphinx_rtd_theme-1.0.0 ? orphaned: textproc/py-sphinx_rtd_theme
py37-sphinxcontrib-applehelp-1.0.2 ? orphaned: textproc/py-sphinxcontrib-applehelp
py37-sphinxcontrib-devhelp-1.0.2 ? orphaned: textproc/py-sphinxcontrib-devhelp
py37-sphinxcontrib-htmlhelp-2.0.0 ? orphaned: textproc/py-sphinxcontrib-htmlhelp
py37-sphinxcontrib-jsmath-1.0.1 ? orphaned: textproc/py-sphinxcontrib-jsmath
py37-sphinxcontrib-qthelp-1.0.3 ? orphaned: textproc/py-sphinxcontrib-qthelp
py37-sphinxcontrib-serializinghtml-1.1.5 ? orphaned: textproc/py-sphinxcontrib-serializinghtml
py37-tkinter-3.7.13_6 = up-to-date with index
py37-toml-0.10.2 ? orphaned: textproc/py-toml
py37-tomli-1.2.3 ? orphaned: textproc/py-tomli
py37-urllib3-1.26.8,1 ? orphaned: net/py-urllib3
py37-webencodings-0.5.1 ? orphaned: converters/py-webencodings
py37-yaml-5.4.1 ? orphaned: devel/py-yaml
py37-zope.component-4.2.2 ? orphaned: devel/py-zope.component
py37-zope.event-4.1.0 ? orphaned: devel/py-zope.event
py37-zope.interface-5.3.0 ? orphaned: devel/py-zope.interface
うはぁ、たまらん。
pkg delete "py37-*"
と「"」で囲めば、ワイルドカードが使えるのですが・・・これは、他の必要なものまで、アンインストールするようで・・・。
個別にアンインストールするしかないな。
下記は、あえて、いちいち、[y/N] をきくようにしています。
削除される一覧が表示されますので、問題なければ y Enter で答えます。
pkg delete -y py37-pip
pkg delete py37-Babel
pkg delete py37-pygments
pkg delete py37-docutils
pkg delete py37-cython
「pip」でインストールしたものは、個別にインストールするしかないな・・・。
わたしが使っているものをインストールします。
まずは、「pip」。
これは、「ports」でインストール。
cd /usr/ports/devel/py-pip
make
make install
このとき、気になるメッセージがあったので記録しておきます。
===> Installing for py39-pip-20.3.4
===> Checking if py39-pip is already installed
===> Registering installation for py39-pip-20.3.4
Installing py39-pip-20.3.4...
pip MUST ONLY be used:
* With the --user flag, OR
* To install or manage Python packages in virtual environments
Failure to follow this warning can and will result in an inconsistent
system-wide Python environment (LOCALBASE/lib/pythonX.Y/site-packages) and
cause errors.
Avoid using pip as root unless you know what you're doing.
他にも「ports」でインストールするもの
cd /usr/ports/databases/py-psycopg2
make
make install
5. python3.7 削除
2022年4月4日。
$ pkg version -vl "<"
php80-composer2-2.2.9 < needs updating (index has 2.3.3)
vim-8.2.4485 < needs updating (index has 8.2.4669)
てなことになっておって。
「vim」をアップグレードしようとすると
$ portupgrade -rR vim
[Reading data from pkg(8) ... - 472 packages found - done]
[Gathering depends for editors/vim ................................................................................ done]
** Duplicated origin - lang/python39: python37-3.7.13 python39-3.9.12
** Run 'pkgdb -F' to interactively fix them.
てなことになります。
$ ls -la /usr/local/bin/py*
lrwxr-xr-x 1 root wheel 11 3月 31 14:21 /usr/local/bin/pybabel -> pybabel-3.9
-rwxr-xr-x 1 root wheel 960 3月 31 14:21 /usr/local/bin/pybabel-3.9
-rwxr-xr-x 1 root wheel 84 7月 1 2021 /usr/local/bin/pydoc2.7
-rwxr-xr-x 1 root wheel 84 3月 31 13:08 /usr/local/bin/pydoc3.7
-rwxr-xr-x 1 root wheel 84 3月 31 13:28 /usr/local/bin/pydoc3.9
lrwxr-xr-x 1 root wheel 12 3月 21 10:39 /usr/local/bin/pyflakes -> pyflakes-3.7
-rwxr-xr-x 1 root wheel 971 3月 21 10:39 /usr/local/bin/pyflakes-3.7
lrwxr-xr-x 1 root wheel 14 3月 31 14:38 /usr/local/bin/pygmentize -> pygmentize-3.9
-rwxr-xr-x 1 root wheel 975 3月 31 14:38 /usr/local/bin/pygmentize-3.9
lrwxr-xr-x 1 root wheel 24 3月 31 13:38 /usr/local/bin/python -> /usr/local/bin/python3.9
lrwxr-xr-x 1 root wheel 24 3月 5 2018 /usr/local/bin/python2 -> /usr/local/bin/python2.7
-r-xr-xr-x 1 root wheel 5872 7月 1 2021 /usr/local/bin/python2.7
-r-xr-xr-x 1 root wheel 1769 7月 1 2021 /usr/local/bin/python2.7-config
-r-xr-xr-x 2 root wheel 5768 3月 31 13:07 /usr/local/bin/python3.7
lrwxr-xr-x 1 root wheel 17 3月 31 13:08 /usr/local/bin/python3.7-config -> python3.7m-config
-r-xr-xr-x 2 root wheel 5768 3月 31 13:07 /usr/local/bin/python3.7m
-r-xr-xr-x 1 root wheel 2936 3月 31 13:08 /usr/local/bin/python3.7m-config
-r-xr-xr-x 1 root wheel 5736 3月 31 13:28 /usr/local/bin/python3.9
-r-xr-xr-x 1 root wheel 3153 3月 31 13:28 /usr/local/bin/python3.9-config
-rwxr-xr-x 1 root wheel 441 3月 31 13:08 /usr/local/bin/pyvenv-3.7
ん~。「python2.7」は、「python2」の系列に依存するものが、未だにいるから、残さなければならぬとして。
「python3.7」は、削除するべきのようです。
cd /usr/ports/lang/python37
make deinstall clean
これで、「vim」がアップグレードできるかと思いきや・・・。
先ほどの現象は出なくなったものの、
[Reading data from pkg(8) ... - 471 packages found - done]
[Gathering depends for editors/vim ................................................................................ done]
[Exclude up-to-date packages ............................. done]
---> Upgrading 'vim-8.2.4485' to 'vim-8.2.4669' (editors/vim)
---> Building '/usr/ports/editors/vim'
===> Cleaning for python39-3.9.12
===> Cleaning for python39-3.9.12
===> Cleaning for vim-8.2.4669
/!\ ERROR: /!\
Ports Collection support for your FreeBSD version has ended, and no ports are
guaranteed to build on this system. Please upgrade to a supported release.
No support will be provided if you silence this message by defining
ALLOW_UNSUPPORTED_SYSTEM.
*** Error code 1
Stop.
make[1]: stopped in /usr/ports/editors/vim
*** Error code 1
Stop.
make: stopped in /usr/ports/editors/vim
** Command failed [exit code 1]: /usr/bin/script -qa /tmp/portupgrade20220404-12611-1ymist4 env UPGRADE_TOOL=portupgrade UPGRADE_PORT=vim-8.2.4485 UPGRADE_PORT_VER=8.2.4485 make
** Fix the problem and try again.
** Listing the failed packages (-:ignored / *:skipped / !:failed)
! editors/vim (vim-8.2.4485) (unknown build error)
先ほどの現象は出なくなったものの・・・。
「Ports Collection support for your FreeBSD version has ended」。
おおそうか、対象のマシンは、「FreeBSD 12.2 RELEASE」を使用しておるのですが、これは、2022年3月31日でサポートが終了しているのであった。
早速、オペレーティングシステム自体をアップグレードせねば。
まぁ、これは、別のページで。
6. トラブルシュート
実は、この後、「certbot」という「python」のモジュールにトラブルが起きたのですが、それに関しては、「メンテナンス・トラブルシュート - SSL 無料の証明書を取得 - certbot インストール」をご参照ください。