7. FreeBSD - メンテナンス・トラブルシュート - python - python2.7 → python3.6

 
7.1 概要
7.2 /etc/make.conf 編集
7.3 conflicts の解消

7.1 概要

 cmake を 3.11.2 から 3.11.3 へとアップグレードするときにいろいろ探して「py-problems」という記事を読みました。  何かのアップグレードのたびに python2.7 のモジュールに依存するものがあるからと python2.7 のモジュールをインストールしたりアップグレードしなければならなかったのですが。  もしかしたら、この方法で python2.7 から python3.6 へと移行できるかもしれない・・・。

7.2 /etc/make.conf 編集

/etc/make.conf
 に1行追加します。

DEFAULT_VERSIONS+=python=3.6 pythonr3=3.6

7.3 conflicts の解消

 例えば cmake 3.11.2 → 3.11.3 のアップグレード時に

> make MAKE_JOBS_UNSAFE=yes
===>   cmake-3.11.3 depends on package: py36-sphinx>0 - not found
===>  Staging for py36-sphinx-1.6.5_1,1
===>   py36-sphinx-1.6.5_1,1 depends on package: py36-Babel>=1.3 - found
===>   py36-sphinx-1.6.5_1,1 depends on package: py36-Jinja2>=2.3 - found
===>   py36-sphinx-1.6.5_1,1 depends on package: py36-docutils>=0.11 - found
===>   py36-sphinx-1.6.5_1,1 depends on package: py36-sphinxcontrib-websupport>=1.0.1 - found
===>   py36-sphinx-1.6.5_1,1 depends on package: py36-pygments>=2.0 - not found
===>  Installing for py36-pygments-2.2.0
===>  Checking if py36-pygments already installed
===>   Registering installation for py36-pygments-2.2.0 as automatic
Installing py36-pygments-2.2.0...
pkg-static: py36-pygments-2.2.0 conflicts with py27-pygments-2.2.0 (installs files into the same place).  Problematic file: /usr/local/bin/pygmentize
*** Error code 70

Stop.
make[3]: stopped in /usr/ports/textproc/py-pygments
*** Error code 1

Stop.
make[2]: stopped in /usr/ports/textproc/py-sphinx
*** Error code 1

Stop.
make[1]: stopped in /usr/ports/devel/cmake
*** Error code 1

Stop.
make: stopped in /usr/ports/devel/cmake
 てな conflicts がやたら発生します。  個別にやっていくのですが。  例えば py27-pygments を py36-pygments にするには

> whereis py-pygments
py-pygments: /usr/ports/textproc/py-pygments
> /usr/ports/textproc/py-pygments
 ここでいったん
/etc/make.conf
 の

DEFAULT_VERSIONS+=python=3.6 pythonr3=3.6
 をコメントアウトして

> make deinstall
 コメントアウトした行を復活して

> make
> make install
 これを py27 のモジュール分繰り返せば(ひ~) python3.6 へと移行できます。  これで今、こんななっててどうしようもできなかったのを解消できるかと期待・・・。

> pkg version -vl "<"
py36-acme-0.20.0,1                 <   needs updating (index has 0.25.0_1,1)
py36-certbot-0.20.0,1              <   needs updating (index has 0.25.0,1)
py36-certifi-2017.11.5             <   needs updating (index has 2018.4.16)
py36-cffi-1.7.0                    <   needs updating (index has 1.11.5)
py36-configargparse-0.12.0         <   needs updating (index has 0.13.0)
py36-cryptography-2.0.3            <   needs updating (index has 2.1.4)
py36-idna-2.5                      <   needs updating (index has 2.6)
py36-openssl-17.3.0                <   needs updating (index has 17.5.0_1)
py36-pycparser-2.10                <   needs updating (index has 2.18)
py36-pytz-2017.3,1                 <   needs updating (index has 2018.4,1)
py36-requests-2.18.1_1             <   needs updating (index has 2.18.4)
py36-urllib3-1.22                  <   needs updating (index has 1.22,1)