2015年1月8日木曜日

FreeBSD 9.1でprint/cups-base (cups-base-1.7.3_3)のコンパイルに失敗する

portupgrade --batch print/cups-baseとすると以下のようなエラーでコンパイル・リンクに失敗します。

/usr/ports/print/cups-client/work/cups-1.7.3/cups/http-support.c:1617: undefined reference to `DNSServiceCreateConnection'

    ! print/cups-base (cups-base-1.7.3_3)    (linker error)
検索エンジンで探してみると、以下のようなWWWページを見つけました。
Bug 195743 - print/cups-base: undefined reference to `avahi_XXX`
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=195743
どうもZeroconf supportを有効にする必要があるようです。
コンパイルオプションを確かめると以下のようになっていて、たしかにZeroconf support用のライブラリをリンクしていません。
# cd /usr/ports/print/cups-base
# make showconfig

====> Zeroconf support: you can only select none or one of them
     AVAHI=off: Zeroconf support via Avahi
     MDNSRESPONDER=off: Zeroconf support via mDNSResponder
===> Use 'make config' to modify these settings
#
そこでmake configを実行し、
(*) MDNSRESPONDER  Zeroconf support via mDNSResponder
を有効にし、コンパイルをすると成功しました。
ただ、以前に何かの問題があってZeroconfは無効にしたような気がするので、対症療法な気がします。

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時間ほどで終わりました。