![FreeBSD pkg 升级不适用于带有 -j 参数的 jail](https://linux22.com/image/653202/FreeBSD%20pkg%20%E5%8D%87%E7%BA%A7%E4%B8%8D%E9%80%82%E7%94%A8%E4%BA%8E%E5%B8%A6%E6%9C%89%20-j%20%E5%8F%82%E6%95%B0%E7%9A%84%20jail.png)
在 FreeBSD 8.4 系统上,我运行 jais 和 EZjail,并使用 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.
我也在该监狱内安装了 pkg,问题完全相同(当然,在监狱内运行时没有 -j 参数。
可能是什么问题呢?
答案1
问题在于,监狱内的存储库目录是空的,与主机上的 /etc/pkg/ 目录不同。主机上的此目录中有一个名为 FreeBSD.conf 的文件,它定义了存储库。
该文件是在主机上自动生成的,但不是在 jail 中。(尽管 pkg 也安装在 jail 内。显然 'pkg -j' 在 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
}