FreeBSD ports の python のデフォルトが 3.6 に変更された

py27-* と py36-* が衝突する

FreeBSDports&packages の python のデフォルトが python 3.6 に変更された。 それに伴って pkg install とか pkg upgrade を行う際に、py27-setuptools と py36-setuptools が干渉して、setuptools に依存するものがごっそり再インストールを要求されたり、py27-setuptools に依存するものが py36-setuptools に依存するものと共存できなかったり、py27-cython と py36-cython が干渉して(以下略)といったことがある。

現象の説明と対応策は FreeBSD bugzillaFreeBSD forum にあったりするけど、

  • py27-setuptools とかが DEFAULT_VERSIONS= python=2.7 の時にビルドされて
  • py36-setuptools とかが DEFAULT_VERSIONS= python=3.6 の時にビルドされて

いると衝突が起きる。で、どうすればよいかというと、

  • 実際に衝突している py27-setuptools なり py27-cython なりを強制的にインストールし直す。 pkg install -f py27-setuptools みたいに。
  • py27-setuptools が依存関係で入っていただけなら、pkg set -A 1 py27-setuptools で、自動的にインストールされたものだよマークをつける。

その上でもう一度インストールしたかったやつを pkg install なり pkg upgrade なりしなおすとうまくゆく、はず。