FreeBSD - メンテナンス・トラブルシュート - python - python2.7 → python27・36 併用時の portupgrade

 
1. 概要
2. 対策

1. 概要

 前節で、python を 2.7 から 3.6 へと移行したのですが、2018年10月9日現在、まだ python2.7 に依存しているモジュールがたくさんあるようで、簡単には捨てられないのです。  するとどうなっちゃうかというと

> pkg version -vl "<"

・・・	以下、関連部分のみを抜き書き

py27-pytz-2018.5,1                 <   needs updating (index has 2018.7,1)
py36-pytz-2018.5,1                 <   needs updating (index has 2018.7,1)
 というように更新が発生した際に

> portupgrade -Rr py36-pytz
 はすんなり成功するのですが

> portupgrade -Rr py27-pytz
 は、エラーになります。

> portupgrade -Rr py27-pytz
[Reading data from pkg(8) ... - 677 packages found - done]
[Gathering depends for devel/py-pytz ................ done]
[Gathering depends for devel/py-babel ... done]
[Exclude up-to-date packages .......... done]
** Detected a package name change: py27-pytz (devel/py-pytz) -> 'py36-pytz' (devel/py-pytz)
--->  Upgrading 'py27-pytz-2018.5,1' to 'py36-pytz-2018.7,1' (devel/py-pytz)
--->  Building '/usr/ports/devel/py-pytz'
===>  Cleaning for py36-pytz-2018.7,1
===>  Cleaning for py27-pytz-2018.7,1
===>  License MIT accepted by the user
===>   py36-pytz-2018.7,1 depends on file: /usr/local/sbin/pkg - found

・・・	略	・・・

Updating database digests format: 100%
Checking integrity... done (0 conflicting)
Deinstallation has been requested for the following 1 packages (of 0 packages in the universe):

Installed packages to be REMOVED:
        py27-pytz-2018.5,1

Number of packages to be removed: 1

The operation will free 1 MiB.
[1/1] Deinstalling py27-pytz-2018.5,1...
[1/1] Deleting files for py27-pytz-2018.5,1: 100%
[Reading data from pkg(8) ... - 676 packages found - done]
--->  Installing the new version via the port
===>  Installing for py36-pytz-2018.7,1
===>   Registering installation for py36-pytz-2018.7,1 as automatic
*** Error code 70

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

Stop.
make: stopped in /usr/ports/devel/py-pytz
** Command failed [exit code 1]: /usr/bin/script -qa /tmp/portupgrade20181030-3883-1rka30q env UPGRADE_TOOL=portupgrade UPGRADE_PORT=py27-pytz-2018.5,1 UPGRADE_PORT_VER=2018.5,1 make -DINSTALLS_DEPENDS reinstall
--->  Restoring the old version
Installing py27-pytz-2018.5,1...
pkg: Missing dependency 'py27-setuptools'

Failed to install the following 1 package(s): /var/tmp/portupgradeABTh5IVH/py27-pytz-2018.5,1.txz
** Command failed [exit code 70]: /usr/local/sbin/pkg add /var/tmp/portupgradeABTh5IVH/py27-pytz-2018.5,1.txz
--->  Skipping 'devel/py-pytz'
** Listing the failed packages (-:ignored / *:skipped / !:failed)
        * devel/py-pytz (py27-pytz-2018.5,1)

2. 対策

 python27 のモジュールは、こういうことがある都度に消していきましょう。  削除するには少しばかりコツがあります。  いったん

/etc/make.conf
 の

DEFAULT_VERSIONS+=python=3.6 pythonr3=3.6
 の部分をコメントアウトして  をコメントアウトして  py27-pytz の場合は、

> whereis py-pytz
py-pytz: /usr/ports/devel/py-pytz
> cd /usr/ports/devel/py-pytz
make deinstall clean
 その上で

/etc/make.conf
 のコメントアウトした部分を元に戻します。