JavaScript is required to for searching.
탐색 링크 건너뛰기
인쇄 보기 종료
이미지 패키징 시스템 매뉴얼 페이지     Oracle Solaris 11 Information Library (한국어)
search filter icon
search icon

문서 정보

머리말

사용자 명령

packagemanager(1)

pkg(1)

pkgdepend(1)

pkgdiff(1)

pkgfmt(1)

pkglint(1)

pkgmerge(1)

pkgmogrify(1)

pkgrecv(1)

pkgrepo(1)

pkgsend(1)

pkgsign(1)

pm-updatemanager(1)

시스템 관리 명령

표준, 환경 및 매크로

pkgdepend

- 이미지 패키징 시스템 종속성 분석기

개요

/usr/bin/pkgdepend [options] command [cmd_options] [operands]
/usr/bin/pkgdepend generate [-IMm] -d dir [-d dir]
    [-D name=value] [-k path] manifest_file
/usr/bin/pkgdepend resolve [-moSv] [-d output_dir]
    [-s suffix] manifest_file ...

설명

pkgdepend는 패키지 종속성을 생성하고 확인하는 데 사용됩니다. 패키지는 다른 패키지의 파일에 종속될 수 있습니다. 일반적으로 pkgdepend는 두 가지 패스, 즉 파일 종속성 생성 및 파일이 종속된 패키지 확인에 사용됩니다.

generate 하위 명령은 패키지 내용을 검사하고 패키지에 필요한 외부 파일을 확인합니다.

resolve 하위 명령은 generate 단계에서 파일 목록을 가져온 후 패키지의 참조 세트를 검색하여 해당 종속 파일이 포함된 패키지의 이름을 확인합니다. 종속 파일이 검색된 패키지의 참조 세트는 현재 게시자의 시스템에 설치된 패키지입니다.

전달된 파일의 여러 구성 요소는 종속성 정보의 소스로 사용됩니다.

ELF

전달된 파일의 ELF 헤더는 가져온 정보를 수정하는 -k-D 옵션을 사용하여 종속성 정보에 대해 분석됩니다. ELF 종속성에 대한 자세한 내용은 ldd(1) 및 Linker and Libraries Guide를 참조하십시오.

스크립트

인터프리터를 참조하는 #! 행이 포함된 셸 스크립트는 해당 인터프리터를 전달하는 패키지에 대한 종속성을 생성합니다.

Python

Python 스크립트는 먼저 스크립트로 분석됩니다. 스크립트가 선언한 가져오기가 종속성 정보의 소스로 사용될 수도 있습니다.

하드 링크

매니페스트의 하드 링크는 링크 대상을 전달하는 패키지에 대한 종속성을 생성합니다.

SMF

require_all 종속성을 포함하는 전달된 SMF 서비스 매니페스트는 해당 FMRI를 제공한 SMF 매니페스트를 전달하는 패키지에 대한 종속성을 생성합니다.

옵션

다음 옵션이 지원됩니다.

-R dir

dir에 루트 지정된 이미지에 대해 작업을 수행합니다. 디렉토리를 지정하지 않았거나 디렉토리가 환경에 따라 달라지지 않는 경우 기본값은 /입니다. 자세한 내용은 "환경 변수" 절을 참조하십시오.

--help 또는 -?

사용법 메시지를 표시합니다.

하위 명령

지원되는 하위 명령은 다음과 같습니다.

generate [-IMm] -d dir [-d dir] [-D name=value] [-k path] manifest_file

manifest_file에 의해 지정된 매니페스트의 파일에 대한 종속성을 생성합니다.

-I를 사용할 경우 manifest_file 내에서 충족되는 종속성을 표시합니다. -I 결과를 pkgdepend resolve와 함께 사용하지 마십시오.

-M을 사용할 경우 분석될 수 없는 파일 유형의 목록을 표시합니다.

-m을 사용할 경우 나중에 추가되는 검색된 종속성을 사용하여 원래 매니페스트를 반복합니다.

-d를 사용할 경우 매니페스트 파일을 검색할 디렉토리 목록에 dir을 추가합니다.

-D의 경우 ELF 파일 종속성에 대한 실행 경로에서 name 토큰을 확장할 방법으로 value를 추가합니다.

-k의 경우 커널 모듈을 검색할 실행 경로 목록에 path를 추가합니다. -k 인수를 사용하면 /kernel/usr/kernel인 기본 경로가 제거됩니다.

작업 또는 매니페스트 속성 pkg.depend.runpath를 사용하여 작업 또는 매니페스트별로 실행 경로(예: -k 옵션에 의해 지정된 경로)를 지정할 수도 있습니다. pkg.depend.runpath 속성의 값은 사용할 경로의 문자열을 콜론으로 구분한 것입니다.

사용된 -k는 매니페스트 또는 작업의 pkg.depend.runpath 속성 세트로 대체됩니다.

분석하려는 파일에 대한 표준 시스템 실행 경로를 포함시키려는 경우 특수 토큰 $PKGDEPEND_RUNPATHpkg.depend.runpath 속성 값의 구성 요소로 사용할 수 있습니다.

자동으로 종속성이 생성되지 않도록 하려는 경우가 있습니다. 예를 들어, 패키지가 일련의 모듈을 가져오는 샘플 Python 스크립트를 전달하는 경우 샘플 스크립트로 가져온 해당 모듈은 샘플 스크립트를 전달하는 패키지에 대한 종속성이 아닙니다. 작업 또는 매니페스트 속성 pkg.depend.bypass-generate를 사용하여 지정된 파일에 대해 종속성이 생성되지 않도록 할 수 있습니다.

pkg.depend.bypass-generate 값은 파일 이름과 일치하는 Python 정규 표현식입니다. 정규 표현식은 파일 경로 시작 및 끝 부분에서 암시적으로 앵커됩니다. 다음 예에 지정된 값의 경우 this/that과는 일치하지만 something/this/that/the/other와는 일치하지 않습니다.

pkg.depend.bypass-generate=this/that

Python 정규 표현식 구문에 대한 자세한 내용을 보려면 pydoc re 명령을 사용하거나 http://docs.python.org/dev/howto/regex.html에 있는 보다 완전한 설명서를 참조하십시오.

pkgdepend generate 입력 매니페스트에 SMF 매니페스트 파일이 포함된 경우 해당 SMF 매니페스트 파일로 선언된 SMF 서비스나 인스턴스가 pkgdepend 출력에 포함됩니다. 이러한 SMF 서비스나 인스턴스는 set 작업의 형태로 org.opensolaris.smf.fmri 이름으로 포함됩니다.

resolve [-moSv] [-d output_dir] [-s suffix] manifest_file ...

파일에 대한 종속성을 해당 파일을 전달하는 패키지에 대한 종속성으로 변환합니다. 종속성은 먼저 명령줄에 지정된 매니페스트에 대해 확인된 후 시스템에 설치된 패키지에 대해 확인됩니다. 기본적으로 각 매니페스트에 대한 종속성은 이름이 manifest_file.res인 파일에 배치됩니다.

-m을 사용할 경우 확인된 종속성을 추가하기 전에 제거된 generate 단계에서 생성된 종속성을 사용하여 매니페스트를 반복합니다.

-o를 사용할 경우 표준 출력에 결과를 기록합니다. 이 옵션은 사용자 소비에 사용됩니다. 파일에 이 출력을 추가하면 매니페스트가 잘못될 수 있습니다. 매니페스트 처리를 위한 파이프 행에는 -o 대신 -d 또는 -s 옵션을 사용하는 것이 좋습니다.

-d를 사용할 경우 output_dir의 별도 파일에서 제공된 각 매니페스트에 대해 확인된 종속성을 기록합니다. 기본적으로 각 파일의 기본 이름은 해당 파일에 기록된 종속성의 소스인 매니페스트의 이름과 동일합니다.

-s를 사용할 경우 각 출력 파일에 대해 확인된 종속성의 소스인 파일의 기본 이름에 suffix를 추가합니다. "."가 제공되지 않은 경우 suffix 앞에 추가됩니다.

-S를 사용할 경우 명령줄에 지정된 매니페스트에 대해서만 확인하고 시스템에 설치된 매니페스트에 대해서는 확인하지 않습니다.

-v를 사용할 경우 메타 데이터를 디버깅하는 추가 패키지 종속성을 포함합니다.

예 1 종속성 생성

foo(컨텐츠 디렉토리가 ./bar/baz에 있음)에서 기록된 매니페스트에 대한 종속성을 생성하고 foo.fdeps에 결과를 저장합니다.

$ pkgdepend generate -d ./bar/baz foo > foo.fdeps

예 2 종속성 확인

foo.fdepsbar.fdeps에서 상호 간에 대해, 그리고 현재 시스템에 설치된 패키지에 대해 파일 종속성을 확인합니다.

$ pkgdepend resolve foo.fdeps bar.fdeps
$ ls *.res
foo.fdeps.res    bar.fdeps.res

예 3 두 개의 매니페스트에 대한 종속성 생성 및 확인

두 개의 매니페스트(foobar)에 대한 파일 종속성을 생성하고 원래 매니페스트에 모든 정보를 보존합니다. 그런 다음 파일 종속성을 확인하고 ./res에 결과 매니페스트를 배치합니다. 이러한 결과 매니페스트는 pkgsend publish와 함께 사용할 수 있습니다.

$ pkgdepend generate -d /proto/foo -m foo > ./deps/foo
$ pkgdepend generate -d /proto/bar -m bar > ./deps/bar
$ pkgdepend resolve -m -d ./res ./deps/foo ./deps/bar
$ ls ./res
foo    bar

예 4 ELF 파일 종속성에 대한 토큰에 값 추가

컨텐츠 디렉토리가 /에 있는 foo에서 기록된 매니페스트에 대한 종속성을 생성하면서 ELF 파일의 실행 경로에 있는 모든 PLATFORM 토큰을 sun4vsun4u로 바꿉니다.

$ pkgdepend generate -d / -D 'PLATFORM=sun4v' -D 'PLATFORM=sun4u' foo

예 5 커널 모듈 디렉토리 지정

컨텐츠 디렉토리가 /에 있는 foo에서 기록된 매니페스트에 대한 종속성을 생성할 때 커널 모듈을 찾을 디렉토리로 /kmod를 지정합니다.

$ pkgdepend generate -d / -k /kmod foo

예 6 종속성 생성 무시

지정된 Python 스크립트에 대한 표준 Python 실행 경로에 opt/python을 추가하고 opt/python/foo/file.py로 전달된 파일에 대해 모든test Python 모듈에 대한 종속성 생성을 무시합니다.

usr/lib/python2.6/vendor-packages/xdg에서 전달된 파일에 대해 종속성이 생성되지 않도록 합니다.

$ cat manifest.py
set name=pkg.fmri value=pkg:/mypackage@1.0,1.0
set name=pkg.summary value="My test package"
dir path=opt mode=0755 group=sys owner=root
dir path=opt/python mode=0755 group=sys owner=root
dir path=opt/python/foo mode=0755 group=sys owner=root
file NOHASH path=opt/python/__init__.py mode=0644 group=sys owner=root
file NOHASH path=opt/python/foo/__init__.py mode=0644 group=sys owner=root
#
# Add runpath and bypass-generate attributes:
#
file NOHASH path=opt/python/foo/file.py mode=0644 group=sys owner=root \
    pkg.depend.bypass-generate=.*/test.py.* \
    pkg.depend.bypass-generate=.*/testmodule.so \
    pkg.depend.bypass-generate=.*/test.so \
    pkg.depend.bypass-generate=usr/lib/python2.6/vendor-packages/xdg/.* \
    pkg.depend.runpath=$PKGDEPEND_RUNPATH:/opt/python

$ pkgdepend generate -d proto manifest.py

환경 변수

PKG_IMAGE

패키지 작업에 사용할 이미지가 포함된 디렉토리를 지정합니다. -R이 지정된 경우 이 값은 무시됩니다.

종료 상태

다음 종료 값이 반환됩니다.

0

모든 요소가 작동되었습니다.

1

오류가 발생했습니다.

2

잘못된 명령줄 옵션이 지정되었습니다.

99

예상치 않은 예외가 발생했습니다.

속성

다음 속성에 대한 설명은 attributes(5)를 참조하십시오.

속성 유형
속성 값
Availability
package/pkg
Interface Stability
커밋되지 않음

참조

pkg(5)

http://hub.opensolaris.org/bin/view/Project+pkg/