(追記:2013/11/7)
公式のpkgngが公開されている。詳しくは以下を。
../../../?p=2357
(追記ここまで)

FreeBSDの新ソフトウェア管理ツールであるpkgngだが、FreeBSD公式サイトの不正アクセス食らったせいでpkgを配布するpackage repositoryが停止されている。

そこでこんな事をしてしのいでいたわけだが、今月の初め、改めてPC-BSDからこのような周知があり、FreeBSDのpkgng使いはこぞって大感謝した。

PC-BSD Announces Package Repository for PC-BSD and FreeBSD 9.1

FreeBSD PKGngパッケージリポジトリ,iXsystems提供開始

ところがここ数日、どうもレポジトリが壊れているようなんである。
曰く、i386用のrepoなのに、amd64のが混じってるぞ、と。
したがって、二週間もすれば対策されるような気もする。

$ sudo pkg upgrade
Updating repository catalogue
repo.txz 100% 14MB 791.6KB / s 1.0MB / s 00:18
pkg: At least one of the packages provided by the repository is not compatible with your ABI:
Your ABI: freebsd: 9: x86: 32
Incompatible ABIs found: freebsd: 9: x86: 64

しかし二週間も待ってられない。ググったら対策が出てきた。
ここにメモしとく。

repo.sqlite(レポジトリカタログ)をローカルで修正する。

レポジトリカタログとは、そのレポジトリ(ftp.pcbsd.org)にあるpkgの情報を一覧にしたもの。
レポジトリの修正はできないから、レポジトリカタログを修正する。
すなわち、カタログからamd64向けのものを削除するわけ。

まずはrepo.txzをダウンロードする。

$ fetch http://ftp.pcbsd.org/pub/mirror/packages/9.1-RELEASE/i386/repo.txz
repo.txz 32% of 13 MB 230 kBps 00m42s

txzをtarで展開して、sqlite3で開く。
packagsテーブルをサーチしてみると、wineが悪さをしていることが分かる。

$ sqlite3 ./repo.sqlite
sqlite> .tables

categories licenses packages pkg_licenses shlibs
deps options pkg_categories pkg_shlibs
sqlite> select * from packages where arch="freebsd:9:x86:64";

11394|emulators/i386-wine-devel|i386-wine|1.5.27,1|Microsoft Windows compatibility environment|Wine is a Microsoft Windows compatibility layer (or program loader)
capable of running Windows applications on i386 and compatible CPUs.
Windows programs running in Wine act as native programs would, running
without the performance or memory usage penalties of an emulator, with
a similar look and feel to other applications on your desktop.

Many applications already work, more or less, including versions of
Microsoft Office and several games.

WWW: http://www.winehq.org/

Gerald Pfeifer <gerald@FreeBSD.org>||freebsd:9:x86:64|gerald@FreeBSD.org|http://www.winehq.org/|/usr/local|18801412|144704625|124|36710abf23920911a3fb2bdd34ab8643b55d6f5a1f4a3ba565c0edf4229a101d|All/i386-wine-1.5.27,1.txz|

たしかに「freebsd:9:x86:64」とありますな。
そして当該行を削除。

sqlite> delete from packages where arch="freebsd:9:x86:64";
sqlite> select * from packages where arch="freebsd:9:x86:64";
sqlite>

sqlite> .quit

これで修正はおしまい。

修正したrepoでアップデートを試みる。

そうしてできたカタログをローカルの/var/db/pkg/へ移す。
まずもともとのカタログを消す。

$ cd /var/db/pkg.
$ ls repo*
repo.sqlite repo.sqlite.unchecked
$ sudo rm repo.*
$

修正済みのカタログを移す。

$ sudo cp ./repo.sqlite /var/db/pkg/
$

そうしたら、あとは-Uオプションを付けて実行するだけ。

-Uオプションはrepoカタログの更新をスキップするもの。

-U Skip updating the repository catalogues with pkg-update (8). Use the
local cache only. pkg upgrade will always print out the list of
packages with available updates.
$ sudo pkg upgrade -U

The following packages will be upgraded:

Upgrading libiconv: 1.14 -> 1.14_1
Upgrading gettext: 0.18.1.1 -> 0.18.1.1_1
Upgrading perl: 5.14.2_2 -> 5.14.2_3
Upgrading pkgconf: 0.8.9 -> 0.9.1_2
Upgrading libffi: 3.0.12 -> 3.0.13

無事にできました。
うっかり-Uを付け忘れて、カタログが上書きされちゃったら、もう一回やればOK。