pkgngを1.2にアップデートしたら、設定ファイルの扱いが変わって、ちょっとした修正が必要になった。
それをまとめる。

まとめ。

  • pkgngを更新したらpkg upgradeを忘れずに
  • すべてコメントの設定ファイルは受け付けてくれない。
  • 設定ファイルでのキー指定は、"(クオート)で囲わないこと。

pkg のアップデートあり

pkg updateをしたら、やたら文句を言われる。

$ sudo pkg update
pkg: Invalid configuration format, ignoring the configuration file
Updating repository catalogue
digests.txz                         100% 1045KB 261.2KB/s 434.7KB/s   00:04
packagesite.txz                     100% 5537KB 276.9KB/s 177.0KB/s   00:20
pkg: Skipping malformed dependency docbook-xml
pkg: Skipping malformed dependency docbook
pkg: Skipping malformed dependency docbook-xml

そしてupgradeすると、pkgに更新があるとな。
1.2.1である。
pkgに更新がある場合には、まずpkgを更新し、そのあとpkg upgradeをせよ、とのお達し。

$ sudo pkg upgrade
pkg: Invalid configuration format, ignoring the configuration file
Updating repository catalogue
digests.txz                         100% 1045KB 261.2KB/s 504.7KB/s   00:04
New version of pkg detected; it needs to be installed first.
After this upgrade it is recommended that you do a full upgrade using: 'pkg upgrade'

Upgrades have been requested for the following 1 packages:

        Upgrading pkg: 1.1.4_10 -> 1.2.1

The upgrade will require 580 KB more space

2 MB to be downloaded

Proceed with upgrading packages [y/N]: y
pkg-1.2.1.txz                       100% 1942KB 323.7KB/s 282.3KB/s   00:06
Checking integrity... done
[1/1] Upgrading pkg from 1.1.4_10 to 1.2.1... done
$

pkg 1.2でアップデートができない。

pkgの更新は問題なく完了。
念のためもう一回pkg updateを試みるが、設定ファイルを読めないと怒られる。

$ sudo pkg update
pkg: Cannot parse configuration file!
$

どうも設定ファイルがおかしいようだ。
しかし現状、/etc/pkgの下や、/usr/local/etc/reposの下にも設定ファイルがあって訳の分からない状態だ。

調べた結果は以下のようなものだ。
pkgはREPOS_PATHで指定される全てのディレクトリから設定ファイルを探す。
デフォルトでは、/etc/pkgと/usr/local/etc/pkg/reposである。

詳しくは以下を参照。
http://lists.freebsd.org/pipermail/freebsd-questions/2013-November/254682.html

注意すべきは、すべてコメント文で出来ている設定ファイルがあると、“pkg: Cannot parse configuration file!“と言い出してそれ以上の処理をしてくれなくなることだ。
どうもバグのようだが。
1.2より前では文句だけだった。

私の場合、以下の通り/usr/local/etc/pkg.confがコメント文だけだったので、rmした。(RCSに保存しているので消したって平気)

$ grep -v "^#" /usr/local/etc/pkg.conf
$
$ sudo rm /usr/local/etc/pkg.conf
$

設定ファイルでのkey指定方法の変更

改めてpkg update。今度は問題なしか?

$ sudo pkg update
pkg: Warning: expecting a boolean for the 'enabled' key of the 'us-west' repo,  the value has been correctly converted, please consider fixing
Updating repository catalogue
digests.txz                         100% 1045KB 261.2KB/s 404.7KB/s   00:04
packagesite.txz                     100% 5537KB 276.9KB/s 187.0KB/s   00:20
Incremental update completed, 22233 packages processed:
0 packages updated, 0 removed and 22233 added.

今度は設定ファイルの内容に文句が付いた。
booleanを期待してたのに違うぞ、と。
文句だけなので進めはするが、気持ち悪いので修正する。
設定ファイルの中でenabledなどのキー指定からクオートを外せばよい。

before

us-west: {
        url:    "http://pkg0.isc.freebsd.org/${ABI}/latest",
        enabled:        "yes",
        mirror_type:    "none",
}

after

us-west: {
        url:    "http://pkg0.isc.freebsd.org/${ABI}/latest",
        enabled:        yes,
        mirror_type:    none,
}

pkg upgrade

そうしたら指定通りpkg upgradeを実行。
今度は問題なし。
通常のアップグレードのほかに、依存が変わったとかで再インストールの必要なものが結構あった。

$ sudo pkg upgrade
Updating repository catalogue
digests.txz                         100% 1045KB 149.2KB/s  54.7KB/s   00:07
Upgrades have been requested for the following 37 packages:

        Upgrading apr: 1.4.8.1.5.2 -> 1.4.8.1.5.3
(略)
        Reinstalling orca-2.32.1_2 (direct dependency changed)
        Reinstalling gnome2-2.32.1_5 (direct dependency changed)

The upgrade will require 2 MB more space

102 MB to be downloaded

Proceed with upgrading packages [y/N]: y

そしてまた、autoremoveで掃除をしておこう。

$ sudo pkg autoremove
Deinstallation has been requested for the following 6 packages:

        autoconf-2.69
        autoconf-wrapper-20130530
        gmake-3.82_1
        help2man-1.43.3_1
        m4-1.4.17,1
        p5-Locale-gettext-1.05_3

The deinstallation will free 5 MB

Proceed with deinstalling packages [y/N]:

余談

以下のようにpy27-distributeが邪魔だというので、pkg delete -f py27-distributeしてpkg upgradeした。

Checking integrity...pkg: WARNING: locally installed py27-distribute-0.6.35 conflicts on /usr/local/bin/easy_install with:
        - py27-setuptools-1.1.7_1

pkg: WARNING: locally installed py27-distribute-0.6.35 conflicts on /usr/local/bin/easy_install-2.7 with:
        - py27-setuptools-1.1.7_1

pkg: WARNING: locally installed py27-distribute-0.6.35 conflicts on /usr/local/lib/python2.7/site-packages/easy-install.pth.dist with:
        - py27-setuptools-1.1.7_1