2015年1月7日水曜日

FreeBSD 9.2でのperl 5.14からperl 5.16へのアップデート

FreeBSD 9.1でportupgrade -a -nを実行したところ、以下のようなメッセージが表示されました。
** Port deleted on 2014-12-31: lang/perl5.14
    Has expired: Unsupported, please upgrade to a more recent version of Perl
pkg updatingで確認するとportupgradeを利用している場合、以下のような作業が必要なようです。
20131023:
  AFFECTS: users of lang/perl5.12 lang/perl5.14
  AUTHOR: mat@FreeBSD.org

  The default Perl has been switched to lang/perl5.16.  These examples
  are for switching from lang/perl5.14, if you are running another
  version, replace lang/perl5.14 with the origin of the Perl you have
  installed.
 
   Portupgrade users:
    0) Fix pkgdb.db (for safety):
        pkgdb -Ff

    1) Reinstall new version of Perl (5.16):
        portupgrade -o lang/perl5.16 -f lang/perl5.14

    2) Reinstall everything that depends on Perl:
        portupgrade -fr lang/perl5.16
指示に従ってpkgdb -Ffを実行するとpkg checkを使えと言われるので、以下のようにしました。
# pkg check -Bdsr
Checking all packages:…

>>> There are still missing dependencies.
>>> You are advised to try fixing them manually.

>>> Also make sure to check 'pkg updating' for known issues.
パッケージの依存関係に不整合がありましたが、これはperlには関係ない部分なので、今は対処せずに先に進みます。


# portupgrade -o lang/perl5.16 -f lang/perl5.14

===> Cleaning for perl5.16-5.16.3_18
** Updating origin in pkg for lang/perl5.14 to lang/perl5.16
---> Cleaning out obsolete shared libraries
#
perl5.16がインストールできたようなので、次に進みます。
「portupgrade -n -fr lang/perl5.16」でアップデート対象のパッケージを確認するとかなりの量です。



+ devel/autoconf (autoconf~pkg-renamed~1888-2.69 -> autoconf-2.69)
+ www/w3m (w3m-0.5.3_4 -> w3m-0.5.3_4)
+ devel/git (git-2.2.1 -> git-2.2.1)
+ devel/imake (imake-1.0.6_1,1 -> imake-1.0.6_1,1)
+ devel/llvm34 (llvm34-3.4.2_1 -> llvm34-3.4.2_1)
+ lang/clang34 (clang34-3.4.2_3 -> clang34-3.4.2_3)
---> Packages processed: 34 done, 0 ignored, 0 skipped and 0 failed
---> Session ended at: Wed, 07 Jan 2015 12:38:51 +0900 (consumed 00:00:12)
ではperlに依存しているパッケージをアップデートします。
# portupgrade -fr lang/perl5.16

--->  Session ended at: Wed, 07 Jan 2015 15:36:53 +0900 (consumed 01:14:05)
#
2時間ほどで終わりました。