2015年9月29日火曜日

portupgradeすると「pkg-static: perl5-5.18.4_17 conflicts with perl5.18-5.18.4_17」となってしまう

FreeBSD 9.1/9.2/10.1でportupgradeすると「pkg-static: perl5-5.18.4_17 conflicts with perl5.18-5.18.4_17」となってしまいました。/etc/ports/UPDATINGにある設定はしているのですが、うまくいきません。

このエラーメッセージで検索すると以下のページが見つかります。
perl5-5.18.4_17 conflicts with perl5.18-5.18.4_17
https://forums.freebsd.org/threads/perl5-5-18-4_17-conflicts-with-perl5-18-5-18-4_17.53293/
はっきりした解決策は提示されていないのですが、なにかをすれば解消できそうな印象です。そこでもういちど
/usr/ports/UPDATING
に書かれている設定を確認します。
# cat /etc/make.conf
DEFAULT_VERSIONS+=perl5=5.18

# pkg set -n perl5.18:perl5
Change name from perl5.16 to perl5 for perl5.18-5.18.x_yy? [y/N]: y

#
次にパッケージデータベースをチェックします
# pkg check -Bdsr -a
...
#
そしてportupgrade -a --batchを実行すると今度はうまくいくようになりました。
パッケージの依存関係が壊れていたのかもしれませんが、はっきりしません。

これでもうまくいかない場合、「pkg set -n perl5.18:perl5」をもう一度実行するとよいかもしれません。これにより、perl5.18に依存しているパッケージについても、perl5パッケージの名前変更が適用されるようです。

もしかすると、/usr/ports/UPDATINGにある記述
DEFAULT_VERSIONS+=    perl5=5.xx
にあわせて、
DEFAULT_VERSIONS+=    perl5=5.18
としてしまっていたのがいけなかったかもしれません。設定を見なおした後は、
DEFAULT_VERSIONS+=perl5=5.18
としています。ただ、対象のFreeBSDは実運用中なので、「試してみる」ことが難しいので、これくらいでお許しください。