-j 매개변수가 있는 감옥에서는 FreeBSD pkg 업그레이드가 작동하지 않습니다.

-j 매개변수가 있는 감옥에서는 FreeBSD pkg 업그레이드가 작동하지 않습니다.

FreeBSD 8.4 시스템에는 EZjail과 함께 실행되는 jais와 포트를 유지하기 위한 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

문제는 호스트의 /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
}

관련 정보