FreeBSD pkg アップグレードが -j パラメータ付きの jail では機能しない

FreeBSD pkg アップグレードが -j パラメータ付きの jail では機能しない

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 upgradepkg -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
}

関連情報