
FreeBSD 8.4 システムでは、EZjail で jais を実行し、ポートを維持するために PKGNG (pkg) を使用しています。
pkg はホスト上では正常に動作しますが、jail 内のソフトウェアの更新を拒否します。
pkg -j 5 version -v
望ましい出力が得られる。例:
ImageMagick-6.7.3.4 < needs updating (index has 6.9.0.4,1)
ORBit2-2.14.19 < needs updating (index has 2.14.19_1)
しかし、実行するとpkg -j 5 upgrade
次pkg -j 5 upgrade [portname]
のメッセージが表示されます。
No active remote repositories configured.
その jail 内にも pkg をインストールしましたが、問題はまったく同じです (もちろん、jail 内では -j パラメータなしで実行します)。
何が問題なのでしょうか?
答え1
問題は、ホスト上の /etc/pkg/ ディレクトリとは異なり、jail 内のリポジトリ ディレクトリが空だったことです。ホスト上のこのディレクトリには、リポジトリを定義する FreeBSD.conf というファイルがあります。
このファイルはホスト上で自動的に作成されましたが、jail 内では作成されませんでした。(pkg も jail 内にインストールされていたにもかかわらず。どうやら 'pkg -j' は jail 内でこのファイルを検索するようです。
このファイルを jail 内の /etc/pkg/ ディレクトリにコピーしたところ、動作するようになりました。
参考までに、この FreeBSD.conf ファイルの内容は次のとおりです。
# $FreeBSD$
#
# To disable this repository, instead of modifying or removing this file,
# create a /usr/local/etc/pkg/repos/FreeBSD.conf file:
#
# mkdir -p /usr/local/etc/pkg/repos
# echo "FreeBSD: { enabled: no }" > /usr/local/etc/pkg/repos/FreeBSD.conf
#
FreeBSD: {
url: "pkg+http://pkg.FreeBSD.org/${ABI}/latest",
mirror_type: "srv",
signature_type: "fingerprints",
fingerprints: "/usr/share/keys/pkg",
enabled: yes
}