
Em um sistema FreeBSD 8.4, tenho jais rodando com EZjail e PKGNG (pkg) para manter minhas portas.
pkg funciona bem no host, mas se recusa a atualizar o software nas prisões.
pkg -j 5 version -v
fornece a saída desejada, por exemplo
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)
Mas quando executo pkg -j 5 upgrade
ou pkg -j 5 upgrade [portname]
recebo a seguinte mensagem:
No active remote repositories configured.
Eu instalei o pkg dentro dessa prisão também, e o problema é exatamente o mesmo (é claro, rodando sem o parâmetro -j quando estiver dentro da prisão.
Qual poderia ser o problema?
Responder1
O problema era que dentro da jail o diretório do repositório estava vazio, ao contrário do diretório /etc/pkg/ no host. Neste diretório do host está um arquivo chamado FreeBSD.conf, que define o repositório.
Este arquivo foi criado automaticamente no host, mas não na prisão. (mesmo que o pkg também tenha sido instalado dentro da jaula. Aparentemente 'pkg -j' procura esse arquivo dentro da jaula.
Acabei de copiar este arquivo para o diretório /etc/pkg/ na prisão e agora funciona.
Para sua informação, o conteúdo deste arquivo 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
}