
В системе FreeBSD 8.4 у меня запущен jais с EZjail и PKGNG (pkg) для обслуживания портов.
pkg отлично работает на хосте, но отказывается обновлять ПО в джейлах.
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
Проблема была в том, что внутри jail каталог репозитория был пуст, в отличие от каталога /etc/pkg/ на хосте. В этом каталоге на хосте находится файл FreeBSD.conf, который определяет репозиторий.
Этот файл был создан автоматически на хосте, но не в клетке (хотя pkg также был установлен внутри клетки). Видимо, «pkg -j» ищет этот файл внутри клетки.
Я просто скопировал этот файл в каталог /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
}