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

문서 정보

머리말

사용자 명령

시스템 관리 명령

표준, 환경 및 매크로

pkg(5)

pkg

- 이미지 패키징 시스템

설명

이미지 패키징 시스템인 pkg(5)는 소프트웨어 수명 주기 관리(설치, 업그레이드 및 제거)를 제공하는 프레임워크입니다. 이미지 패키징은 일련의 키/값 쌍 및 가능한 데이터 페이로드에 의해 정의된 작업 컬렉션인 패키지 단위로 소프트웨어를 관리합니다. 대부분의 경우 작업은 파일 시스템에서 발견된 파일이지만 설치 가능한 다른 객체(예: 드라이버, 서비스 및 사용자)를 나타내기도 합니다.

패키지 FMRI 및 버전

각 패키지는 pkg: 체계를 사용하여 FMRI(결함 관리 리소스 식별자)로 표시됩니다. 패키지의 전체 FMRI는 다음 형식의 체계, 게시자, 패키지 이름 및 버전 문자열로 구성됩니다.

pkg://solaris/system/library/c++-runtime@0.5.11,5.11-0.174.0.0.0.0.0:20110921T190358Z

solaris는 게시자입니다. system/library/c++-runtime은 패키지 이름입니다. 이름 공간은 계층적이며 길이가 임의적이지만 적용되는 제약이 없으며 이름이 임의적입니다. 게시자 정보는 선택적이지만 있을 경우 pkg://로 시작되어야 합니다. 게시자를 포함하는 FMRI는 "정규화"된 것으로 지칭되는 경우가 많습니다. 게시자 정보가 없을 경우 일반적으로 패키지 이름은 pkg:/로 시작되어야 합니다.

패키징 클라이언트가 게시자 정보를 포함하지 않는 FMRI의 체계를 생략할 수 있도록 허용하는 경우도 많습니다. 예를 들어, pkg:/system/library/c++-runtimesystem/library/c++-runtime으로 작성할 수 있습니다. 체계가 생략되면 클라이언트도 일치 용도로 사용할 패키지 이름의 마지막 구성 요소를 제외한 모든 부분을 생략할 수 있도록 허용합니다. 예를 들어, system/library/c++-runtimelibrary/c++-runtime 또는 c++-runtime으로 작성할 수 있으며, 이는 이름이 c++-runtime인 패키지 또는 /c++-runtime으로 끝나는 패키지 이름과 일치됩니다.

게시자 이름은 개인, 개인 그룹 또는 조직을 하나 이상의 패키지에 대한 소스로 식별합니다. 게시자 이름이 충돌하지 않도록 하고 게시자를 쉽게 식별할 수 있도록 하려면 패키지 게시 엔티티를 게시자 이름으로 나타내는 도메인 이름을 사용하는 것이 가장 좋습니다.

패키지 이름 뒤에는 @ 기호로 구분된 버전이 옵니다. 버전은 문장 부호로 구분된 네 시퀀스의 숫자로 구성됩니다. 처음 세 시퀀스의 요소는 점으로 구분되며 시퀀스의 길이는 임의적입니다. 버전 구성 요소의 선행 0(예: 01.1 또는 1.01)은 허용되지 않습니다. 후행 0(예: 1.10)은 허용됩니다.

버전의 첫번째 부분은 구성 요소 버전입니다. 운영 체제에 긴밀하게 바인딩된 구성 요소의 경우 일반적으로 해당 운영 체제 버전의 uname -r 값입니다. 고유의 개발 수명 주기가 있는 구성 요소의 경우 이 시퀀스는 점으로 구분된 릴리스 번호(예: 2.4.10)입니다.

버전의 두번째 부분은 빌드 버전으로, 있을 경우 쉼표 앞에 와야 합니다. 빌드 버전은 패키지 내용이 성공적으로 실행되는 데 필요한 운영 체제 버전에 대한 최소 한도를 제공하여 패키지 내용이 작성된 운영 체제의 버전을 지정합니다.

버전의 세번째 부분은 분기 버전으로, 있을 경우 하이픈(-) 앞에 와야 합니다. 분기 버전은 공급업체 관련 정보를 제공하는 버전 구성 요소입니다. 분기 버전은 패키징 메타 데이터가 변경될 때 구성 요소 버전과 별개로 증분될 수 있습니다. 분기 버전에는 빌드 번호 또는 기타 정보가 포함될 수도 있습니다.

버전의 네번째 부분은 시간 기록으로, 있을 경우 콜론(:) 앞에 와야 합니다. 시간 기록은 패키지가 게시된 시간을 나타냅니다.

버전 간의 비교를 수행할 때 왼쪽에 있는 구성 요소가 동일하지 않은 경우 전체 버전의 구성 요소가 없는 것으로 간주됩니다. 따라서 "4.3"이 "4.2"보다 크므로 "4.3-1"이 "4.2-7"보다 높은 버전이며 "3"이 "1"보다 크므로 "4.3-3"이 "4.3-1"보다 높은 버전입니다.

표시되거나 필요한 정보의 양을 줄이기 위해 적합한 경우 시스템의 여러 요소가 FMRI를 표시할 때 FMRI를 요약하며 보다 짧은 형식의 입력값을 승인합니다. 일반적으로 체계, 게시자, 빌드 버전 및 시간 기록을 편집할 수 있습니다. 버전 정보를 모두 생략할 수 있는 경우도 있습니다.

작업

작업은 시스템에 설치 가능한 객체를 나타내며, 패키지의 매니페스트에 기술됩니다. 각 작업은 기본적으로 이름과 주요 속성으로 구성됩니다. 각각 버전 내역을 따르므로 각 작업의 조합은 고유 객체를 나타냅니다. 작업은 다른 속성을 가질 수 있습니다. 패키징 시스템에서 직접 해석하는 속성도 있고, 시스템 관리자 또는 최종 사용자에게만 유용한 속성도 있습니다.

작업은 다음과 같이 간단한 텍스트로 표현됩니다.

action_name attribute1=value1 attribute2=value2 ...

속성의 이름에는 공백, 따옴표 또는 등호(=)가 사용될 수 없습니다. 첫번째 등호 뒤의 모든 문자는 값에 속합니다. 값에는 공백, 따옴표 또는 등호가 모두 사용될 수 있습니다. 단, 공백은 작은따옴표 또는 큰따옴표로 묶여야 합니다. 작은따옴표는 큰따옴표로 묶인 문자열 안에서 제어되지 않아도 되며 큰따옴표는 작은따옴표로 묶인 문자열 안에서 제어되지 않아도 됩니다. 따옴표가 사용된 문자열이 종료되지 않도록 따옴표 앞에 백슬래시(\)를 붙일 수 있습니다. 백슬래시는 백슬래시로 제어될 수 있습니다.

속성의 이름은 여러 값을 사용하여 두 번 이상 지정될 수 있습니다. 이러한 속성은 순서가 지정되지 않은 목록으로 처리됩니다.

속성이 여러 개인 작업은 매니페스트 파일에 긴 행을 만들 수 있습니다. 완성되지 않은 각 행의 끝에 백슬래시를 붙여 해당 행을 줄 바꿈할 수 있습니다. 이 연속 문자는 속성/값 쌍 사이에 있어야 합니다. 속성, 속성 값 및 조합은 나눌 수 없습니다.

아래 나열되는 속성은 전체 세트가 아닙니다. 실제로, 작업에 연결될 수 있는 속성은 임의적이며 표준 속성 세트를 간편하게 확장하여 향후 개발을 통합할 수 있습니다.

패키징 컨텍스트 외부에서 추가 작업이 실행되도록 하는 작업 속성도 있습니다. 이러한 속성은 아래의 "액추에이터" 절에서 설명됩니다.

File 작업

file 작업은 일반 파일을 나타냅니다. file 작업은 페이로드를 참조하며 다음과 같은 네 개의 표준 속성을 가집니다.

path

파일이 설치된 파일 시스템 경로입니다. 이 속성은 file 작업의 키 속성입니다.

mode

파일의 액세스 권한(숫자 형식)입니다. 이러한 권한은 ACL이 아니라 단순한 권한일 뿐입니다.

owner

파일을 소유한 사용자의 이름입니다.

group

파일을 소유한 그룹의 이름입니다.

페이로드는 이름이 지정되지 않는다는 점에서 위치 속성으로, 작업 이름 뒤의 첫번째 단어입니다. 게시된 매니페스트에서는 파일 내용의 SHA-1 해시입니다. 게시해야 할 매니페스트에 있을 경우 페이로드를 찾을 수 있는 경로를 나타냅니다. pkgsend(1)를 참조하십시오. 값에 등호가 포함된 경우 위치 속성 대신 해시 속성을 사용할 수 있습니다. 동일한 작업에 위치 속성과 해시 속성을 함께 사용할 수 있습니다. 단, 해시는 같아야 합니다.

기타 속성은 다음과 같습니다.

preserve

이 속성은 파일이 설치되거나 마지막으로 업그레이드된 이후 파일 내용이 변경된 것으로 확인된 경우 업그레이드 시 파일 내용을 겹쳐 쓰지 않아야 하도록 지정합니다. 초기 설치 시 기존 파일이 발견된 경우 파일이 복원됩니다(/var/pkg/lost+found에 저장됨).

preserve의 값이 renameold인 경우 기존 파일의 이름이 확장자 .old로 바뀌며 새 파일이 해당 위치에 삽입됩니다.

preserve의 값이 renamenew인 경우 기존 파일이 그대도 유지되며 새 파일이 확장자 .new로 설치됩니다.

preserve의 값이 legacy인 경우 초기 패키지 설치를 위해 이 파일이 설치되지 않습니다. 업그레이드 시 기존 파일의 이름이 확장자 .legacy로 바뀐 후 새 파일이 해당 위치에 삽입됩니다.

preserve의 값이 true(또는 strawberry와 같이 위에 나열되지 않은 값)인 경우 기존 파일이 그대로 유지되며 새 파일이 설치되지 않습니다.

overlay

이 속성은 다른 패키지가 동일한 위치의 파일을 전달할 수 있도록 작업이 허용하지 여부 또는 작업이 다른 패키지를 오버레이하는 데 사용할 파일을 전달하는지 여부를 지정합니다. 이 기능은 자체 어셈블리(예: /etc/motd)에 참여하지 않으며 겹쳐 써도 문제가 없는 구성 파일에 사용됩니다.

overlay를 지정하지 않을 경우 여러 패키지가 파일을 동일한 위치로 전달할 수 없습니다.

overlay의 값이 allow인 경우 하나의 다른 패키지만 파일을 동일한 위치로 전달할 수 있도록 허용됩니다. preserve 속성이 함께 설정되지 않은 경우 이 값은 적용되지 않습니다.

overlay의 값이 true인 경우 작업이 전달하는 파일이 allow를 지정한 다른 작업을 겹쳐 씁니다. 설치된 파일에 대한 변경 사항은 오버레이 파일의 preserve 속성 값에 따라 보존됩니다. 제거 시 오버레이하려는 작업이 아직 설치된 상태인 경우 preserve 속성 지정 여부에 관계없이 파일 내용이 보존됩니다. 하나의 작업만 다른 작업을 오버레이할 수 있으며 mode, ownergroup 속성이 일치해야 합니다.

"기호에 따라" 파일을 사용해 볼 수 있으며 종류에 따라 파일에는 추가 속성이 포함될 수 있습니다. ELF 파일의 경우 인식할 수 있는 속성은 다음과 같습니다.

elfarch

ELF 파일의 구조입니다. 이 속성은 파일이 작성된 구조에 대한 uname -p의 출력입니다.

elfbits

이 속성은 32 또는 64입니다.

elfhash

이 속성은 파일에서 "관심 있는" ELF 섹션의 해시입니다. 해당 섹션은 이진이 로드될 때 메모리에 매핑되는 섹션으로, 두 가지 이진의 실행 가능 동작이 다를지 여부를 확인할 때 고려해야 할 유일한 섹션입니다.

original_name

이 속성은 패키지 간에 이동하거나 위치 간에 이동하거나 두 가지 모두에서 이동하는 편집 가능한 파일을 처리할 때 사용됩니다. 이 속성에는 원래 패키지 이름, 콜론, 원래 파일 경로 순의 형식이 사용됩니다. 삭제하려는 파일은 패키지와 경로 또는 original_name 속성(지정된 경우)의 값과 함께 기록됩니다. 동일한 패키징 작업의 일부로 삭제된 경우 설치하려는 편집 가능한 파일에 original_name 속성 세트가 있으면 해당 이름의 파일이 사용됩니다.

revert-tag

이 속성은 하나의 세트로 되돌려야 할 편집 가능한 파일의 태그를 지정할 때 사용됩니다. revert-tag 값은 여러 개 지정할 수 있습니다. 해당 태그가 지정된 상태로 pkg revert가 호출되면 매니페스트에 정의된 상태로 파일이 되돌려집니다. pkg(1)를 참조하십시오.

Directory 작업

dir 작업은 파일 시스템 객체를 나타낸다는 점에서 file 작업과 유사합니다. dir 작업은 일반 파일 대신 디렉토리를 나타냅니다. dir 작업의 표준 속성은 file 작업과 동일한 네 개이며 path가 키 속성입니다.

디렉토리는 IPS에서 카운트되는 참조입니다. 명시적 또는 암시적으로 디렉토리를 참조하는 마지막 패키지가 더 이상 디렉토리를 참조하지 않을 경우 해당 디렉토리가 제거됩니다. 해당 디렉토리에 패키지화되지 않은 파일 시스템 객체가 포함된 경우 해당 항목은 $IMAGE_META/lost+found로 이동됩니다. $IMAGE_META에 대한 자세한 내용은 "파일" 절을 참조하십시오.

패키지화되지 않은 컨텐츠를 새 디렉토리로 이동하려는 경우 다음 속성이 유용할 수 있습니다.

salvage-from

이 속성은 복구된 항목의 디렉토리에 대한 이름을 지정합니다. 해당 속성을 가진 디렉토리는 만들어질 때 복구된 디렉토리 컨텐츠(있을 경우)를 상속합니다.

Link 작업

link 작업은 심볼릭 링크를 나타냅니다. link 작업의 표준 속성은 다음과 같습니다.

path

심볼릭 링크가 설치된 파일 시스템 경로입니다. 이 속성은 link 작업의 키 속성입니다.

target

심볼릭 링크의 대상으로, 링크가 확인되는 파일 시스템 객체입니다.

mediator

지정된 조정 그룹(예: python)에 참여한 모든 경로 이름이 공유하는 조정 이름 공간의 항목을 지정합니다. 링크 조정은 mediator-version 및/또는 mediator-implementation을 기반으로 수행할 수 있습니다. 지정된 경로 이름에 대해 조정된 모든 링크는 동일한 조정자를 지정해야 합니다. 단, 모든 조정자 버전 및 구현이 지정된 경로에서 링크를 제공해야 하는 것은 아닙니다. 조정이 링크를 제공하지 않을 경우 해당 조정이 선택될 때 링크가 제거됩니다. 특정 버전 및/또는 구현과 함께 mediator는 패키징 시스템에서 사용되도록 선택할 수 있는 조정을 나타냅니다.

mediator-version

mediator 속성에 의해 기술된 인터페이스의 버전(점으로 구분된 음수가 아닌 정수 시퀀스로 표시됨)을 지정합니다. mediator는 지정되었으며 mediator-implementation은 지정되지 않은 경우 이 속성이 필요합니다. 로컬 시스템 관리자는 명시적으로 사용할 버전을 설정할 수 있습니다. 지정된 값은 일반적으로 링크를 전달하는 패키지의 버전과 일치해야 합니다. 예를 들어, runtime/python-26은 필요하지 않지만 mediator-version=2.6을 사용해야 합니다.

mediator-implementation

mediator-version과 함께 또는 이 속성 대신 사용할 조정자의 구현을 지정합니다. 시스템 관리자가 명시적으로 지정하지 않은 경우 구현 문자열은 순서가 지정되지 않은 것으로 간주되며 문자열은 pkg(5)에 의해 임의적으로 선택됩니다.

값은 영숫자와 공백으로 구성된 임의적 길이의 문자열일 수 있습니다. 구현 자체의 버전을 지정할 수 있거나 버전이 지정된 경우 @ 뒤의 문자열 끝에 버전(점으로 구분된 음수가 아닌 정수 시퀀스로 표시됨)을 지정해야 합니다. 구현의 버전이 여러 개 존재하는 경우 기본 동작은 최신 버전의 구현을 선택하는 것입니다.

특정 경로에 있는 구현 조정 링크의 인스턴스가 하나만 시스템에 설치된 경우 해당 인스턴스가 자동으로 선택됩니다. 나중에 경로에서 다른 링크가 설치되면 공급업체, 사이트 또는 로컬 대체가 적용되지 않거나 링크 중 하나가 조정된 버전인 경우 링크가 전환되지 않습니다.

mediator-priority

조정된 링크의 충돌을 해결할 때 일반적으로 pkg(5)는 mediator-version의 값이 가장 큰 링크를 선택하거나 mediator-implementation(불가능한 경우)을 기반으로 링크를 선택합니다. 이 속성은 일반적인 충돌 해결 프로세스에 대한 대체를 지정할 때 사용됩니다.

이 속성을 지정하지 않을 경우 기본 조정자 선택 논리가 적용됩니다.

값이 vendor인 경우 mediator-priority가 지정되지 않은 링크에 비해 해당 링크가 우선합니다.

값이 site인 경우 값이 vendor이거나 mediator-priority가 지정되지 않은 링크에 비해 해당 링크가 우선합니다.

로컬 시스템 관리자는 위에 설명된 선택 논리를 대체할 수 있습니다.

Hardlink 작업

hardlink 작업은 하드 링크를 나타냅니다. 이 작업은 link 작업과 동일한 속성을 가지며 path가 키 속성입니다.

Driver 작업

driver 작업은 장치 드라이버를 나타냅니다. driver 작업은 페이로드를 참조하지 않습니다. 드라이버 파일 자체는 file 작업으로 설치되어야 합니다. 인식할 수 있는 속성은 다음과 같습니다. 자세한 내용은 add_drv(1M)를 참조하십시오.

name

드라이버의 이름입니다. 일부 경우를 제외하고 일반적으로 드라이버 이진의 파일 이름입니다. 이 속성은 driver 작업의 키 속성입니다.

alias

이 속성은 드라이버의 별칭을 나타냅니다. 지정된 드라이버의 alias 속성은 두 개 이상일 수 있습니다. 특별한 할당 규칙이 필요하지 않습니다.

class

이 속성은 드라이버 클래스를 나타냅니다. 지정된 드라이버의 class 속성은 두 개 이상일 수 있습니다.

perms

이 속성은 드라이버의 장치 노드용 파일 시스템 권한을 나타냅니다.

clone_perms

이 속성은 해당 드라이버에 대한 복제 드라이버의 미러 노드용 파일 시스템 권한을 나타냅니다.

policy

이 속성은 장치에 대한 추가 보안 정책을 지정합니다. 지정된 드라이버의 policy 속성은 두 개 이상일 수 있지만 미러 장치 사양은 두 개 이상의 속성에 존재할 수 없습니다.

privs

이 속성은 드라이버에 사용되는 권한을 지정합니다. 지정된 드라이버의 privs 속성은 두 개 이상일 수 있습니다.

devlink

이 속성은 /etc/devlink.tab의 항목을 지정합니다. 값은 \t로 표시되는 탭을 사용하여 파일에 삽입될 정확한 행입니다. 자세한 내용은 devlinks(1M)를 참조하십시오. 지정된 드라이버의 devlink 속성은 두 개 이상일 수 있습니다.

Depend 작업

depend 작업은 패키지 간 종속성을 나타냅니다. 패키지는 다른 패키지에 종속될 수 있습니다. 첫번째 패키지의 기능이 작동 또는 설치되도록 하려면 첫번째 패키지에 두번째 패키지의 기능이 필요하기 때문입니다. 종속성은 선택적일 수 있습니다. 설치 시 종속성이 충족되지 않을 경우 패키징 시스템은 다른 제약 조건에 따라 종속 패키지를 설치하거나 최신 버전으로 업데이트하려고 시도합니다.

인식할 수 있는 속성은 다음과 같습니다.

fmri

종속 패키지를 나타내는 FMRI입니다. 이 속성은 dependency 작업의 키 속성입니다. fmri 값에는 게시자가 포함되지 않아야 합니다. 패키지 이름은 완전한 것으로 간주됩니다. require-any 유형의 종속성에는 fmri 속성이 여러 개 있을 수 있습니다. fmri 값에서 버전은 선택적입니다. 단, 일부 유형의 종속성의 경우 버전이 없는 fmri는 의미가 없습니다.

type

종속성의 유형입니다.

값이 require인 경우 종속성이 필요하며 종속성의 버전은 fmri 속성에 지정된 버전과 같거나 이후 버전이어야 합니다. 버전을 지정하지 않을 경우 모든 버전이 종속성을 충족합니다. 필요한 종속성을 충족할 수 없을 경우 패키지를 설치할 수 없습니다.

값이 optional인 경우 종속성(있을 경우)은 지정된 버전 레벨보다 크거나 같아야 합니다.

값이 exclude인 경우 지정된 버전 레벨보다 크거나 같은 레벨에 종속성이 있으면 포함하는 패키지를 설치할 수 없습니다. 버전을 지정하지 않을 경우 종속성을 지정하는 패키지와 동시에 종속 패키지를 설치할 수 없습니다.

값이 incorporate인 경우 종속성은 선택적이지만 종속 패키지의 버전에 대해서는 제약 조건이 적용됩니다. 아래의 "제약 조건 및 고정"을 참조하십시오.

값이 require-any인 경우 require 종속성 유형과 동일한 규칙에 따라 여러 fmri 속성에 의해 지정된 여러 종속 패키지 중 하나가 종속성을 충족할 수 있습니다.

값이 conditional인 경우 predicate 속성에 의해 정의된 패키지가 시스템에 있는 경우에만 종속성이 필요합니다.

값이 origin인 경우 종속성(있을 경우)은 설치 전에 수정할 이미지의 지정된 값보다 크거나 같아야 합니다. root-image 속성의 값이 true인 경우 이 패키지를 설치하려면 /에 루트 지정된 이미지에 종속성이 있어야 합니다.

값이 group인 경우 패키지가 이미지 무시 목록에 있지 않는 한 종속성이 필요합니다. 오래된 패키지는 자동으로 그룹 종속성을 충족합니다. pkg(1)의 avoid 하위 명령을 참조하십시오.

값이 parent인 경우 이미지가 하위 이미지가 아니면 종속성이 무시됩니다. 이미지가 하위 이미지이면 종속성이 있어야만 상위 이미지에 존재할 수 있습니다. parent 종속성에 대해 일치하는 패키지 버전은 incorporate 종속성에 사용된 것과 동일합니다.

predicate

conditional 종속성에 대한 술어를 나타내는 FMRI입니다.

root-image

위에 언급된 origin 종속성에 대해서만 적용됩니다.

License 작업

license 작업은 패키지 내용에 연결된 라이센스 또는 기타 정보를 나타냅니다. 패키지는 license 작업을 사용하여 패키지 설치 프로그램에 라이센스, 보증 부인 또는 기타 지침을 전달할 수 있습니다.

license 작업의 페이로드는 패키지와 관련된 이미지 메타 데이터 디렉토리로 전달되며 사용자가 읽을 수 있는 텍스트 데이터만 포함해야 합니다. HTML 또는 다른 형식의 마크업은 포함하지 않아야 합니다. 속성을 통해 license 작업은 관련 페이로드가 표시되어야 하거나 동의가 필요함을 클라이언트에 알릴 수 있습니다. 표시 및/또는 동의 방법은 클라이언트에 따라 다릅니다.

인식할 수 있는 속성은 다음과 같습니다.

license

이 속성은 license 작업의 키 속성입니다. 이 속성은 사용자가 라이센스 텍스트 자체를 읽지 않고도 내용을 확인할 수 있도록 라이센스에 대한 의미 있는 설명을 제공합니다. 몇 가지 값 예는 다음과 같습니다.

  • ABC Co. Copyright Notice

  • ABC Co. Custom License

  • Common Development and Distribution License 1.0 (CDDL)

  • GNU General Public License 2.0 (GPL)

  • GNU General Public License 2.0 (GPL) Only

  • MIT License

  • Mozilla Public License 1.1 (MPL)

  • Simplified BSD License

license 값은 패키지 내에서 고유해야 합니다. 위의 예에 나타난 바와 같이, 설명에 라이센스 버전을 포함하는 것이 권장됩니다. 한 패키지에 여러 라이센스 하의 코드가 있는 경우 여러 license 작업을 사용합니다. 라이센스 속성 값의 길이는 64자를 초과할 수 없습니다.

must-accept

true인 경우 사용자가 이 라이센스에 동의해야만 관련 패키지를 설치 또는 업데이트할 수 있습니다. 이 속성을 생략하는 것은 false로 설정하는 것과 동일합니다. 동의 방법(예: 대화식 또는 구성 기반)은 클라이언트에 따라 다릅니다.

must-display

true인 경우 패키징 작업 중 클라이언트가 작업의 페이로드를 표시해야 합니다. 이 값을 생략하는 것은 false로 설정하는 것과 동일합니다. 이 속성은 저작권 경고에 사용되지 않고 작업 중 표시되어야 하는 실제 라이센스 또는 기타 자료에만 사용되어야 합니다. 표시 방법은 클라이언트에 따라 다릅니다.

Legacy 작업

legacy 작업은 레거시 패키징 시스템에 사용되는 패키지 데이터를 나타냅니다. 이 작업에 연결된 속성을 레거시 시스템의 데이터베이스에 추가하면 해당 데이터베이스를 질의하는 도구는 레거시 패키지가 실제로 설치되어 있는 것처럼 작동할 수 있습니다. 특히 이 속성은 패키지를 사용하여 종속성을 충족시킬 수 있도록 pkg 속성에 따라 명명된 패키지가 시스템에 설치되어 있음을 레거시 시스템에 충분히 인식시켜야 합니다.

pkginfo(4)의 매개변수에 따라 명명된 인식할 수 있는 속성은 다음과 같습니다.

category

CATEGORY 매개변수에 대한 값입니다. 기본값은 system입니다.

desc

DESC 매개변수에 대한 값입니다.

hotline

HOTLINE 매개변수에 대한 값입니다.

name

NAME 매개변수에 대한 값입니다. 기본값은 none provided입니다.

pkg

설치하려는 패키지의 약어입니다. 기본값은 패키지 FMRI의 이름입니다. 이 속성은 legacy 작업의 키 속성입니다.

vendor

VENDOR 매개변수에 대한 값입니다.

version

VERSION 매개변수에 대한 값입니다. 기본값은 패키지 FMRI의 버전입니다.

Set 작업

set 작업은 패키지 레벨 속성 또는 메타 데이터(예: 패키지 설명)를 나타냅니다.

인식할 수 있는 속성은 다음과 같습니다.

name

속성의 이름입니다.

value

속성에 지정된 값입니다.

set 작업은 패키지 작성인이 선택한 메타 데이터를 전달할 수 있습니다. 단, 패키징 시스템에 대해 특정 의미를 갖는 잘 정의된 속성 이름이 여러 개 있습니다.

pkg.fmri

"설명" 절의 "패키지 FMRI 및 버전"을 참조하십시오.

info.classification

pkg(5) 클라이언트가 패키지 분류에 사용할 수 있는 하나 이상의 토큰입니다. 값에는 체계(예: "org.opensolaris.category.2008" 또는 "org.acm.class.1998")와 실제 분류(예: "Applications/Games")가 콜론(:)으로 구분되어 포함되어야 합니다.

pkg.description

패키지 내용 및 기능에 대한 자세한 설명(일반적으로 단락 또는 특정 길이)입니다.

pkg.obsolete

true인 경우 패키지가 오래된 것으로 표시됩니다. 오래된 패키지는 set 작업 이외의 작업을 포함할 수 없으며 이름이 바뀐 것으로 표시되지 않아야 합니다.

pkg.renamed

true인 경우 패키지의 이름이 바뀐 것입니다. 패키지에는 이 패키지의 이름이 바뀐 패키지 버전을 가리키는 depend 작업이 하나 이상 있어야 합니다. 패키지는 이름이 바뀐 패키지와 오래된 패키지로 동시에 표시될 수 없지만 그렇지 않은 경우 여러 개의 set 작업을 포함할 수 있습니다.

pkg.summary

패키지에 대한 한 행의 짧은 설명입니다.

Group 작업

group 작업은 group(4)에 정의된 대로 UNIX 그룹을 정의합니다. 그룹 암호는 지원되지 않습니다. 초기에 이 작업으로 정의된 그룹에는 사용자 목록이 없습니다. 사용자는 user 작업으로 추가할 수 있습니다. 인식할 수 있는 속성은 다음과 같습니다.

groupname

그룹 이름에 대한 값입니다.

gid

그룹의 고유한 숫자 ID입니다. 기본값은 100 미만의 첫번째 사용 가능한 그룹입니다.

User 작업

user 작업은 /etc/passwd, /etc/shadow, /etc/group/etc/ftpd/ftpusers 파일에 정의된 대로 UNIX 사용자를 정의합니다. 이 속성으로 정의된 사용자는 해당 파일에 추가된 항목을 가집니다.

인식할 수 있는 속성은 다음과 같습니다.

username

사용자의 고유한 이름입니다.

password

사용자의 암호화된 암호입니다. 기본값은 *LK*입니다. shadow(4)를 참조하십시오.

uid

사용자의 고유한 UID입니다. 기본값은 100 미만의 첫번째 사용 가능한 값입니다.

group

사용자 기본 그룹의 이름입니다. /etc/group에 있어야 합니다.

gcos-field

/etc/passwd에 있는 gcos 필드의 값입니다. 기본값은 username입니다.

home-dir

사용자의 홈 디렉토리입니다. 기본값은 /입니다.

login-shell

사용자의 기본 셸입니다. 기본값은 비어 있습니다.

group-list

사용자가 속한 두번째 그룹입니다. group(4)을 참조하십시오.

ftpuser

true 또는 false로 설정할 수 있습니다. 기본값인 true를 사용하면 사용자가 FTP를 통해 로그인할 수 있습니다. ftpusers(4)를 참조하십시오.

lastchg

1970년 1월 1일에서 암호가 마지막으로 수정된 날짜 사이의 기간(일)입니다. 기본값은 비어 있습니다. shadow(4)를 참조하십시오.

min

암호 변경 간격에 필요한 최소 기간(일)입니다. 암호 에이징을 사용으로 설정하려면 이 필드를 0 이상으로 설정해야 합니다. 기본값은 비어 있습니다. shadow(4)를 참조하십시오.

max

최대 암호 유효 기간(일)입니다. 기본값은 비어 있습니다. shadow(4)를 참조하십시오.

warn

사용자에게 경고되는 암호 만료까지 남은 기간(일)입니다. shadow(4)를 참조하십시오.

inactive

해당 사용자에게 허용되는 비활성 기간(일)입니다. 이 속성은 시스템별로 카운트됩니다. 마지막 로그인에 대한 정보는 시스템의 lastlog 파일에서 제공됩니다. shadow(4)를 참조하십시오.

expire

UNIX Epoch(1970년 1월 1일) 이후 기간(일)으로 표시되는 절대 날짜입니다. 이 수에 도달하면 더 이상 로그인을 사용할 수 없습니다. 예를 들어, 만료 값이 13514이면 2007년 1월 1일에 로그인이 만료됩니다. shadow(4)를 참조하십시오.

flag

비어 있음으로 설정합니다. shadow(4)를 참조하십시오.

액추에이터

일부 컨텍스트에서는 특정 작업 소개를 준비하는 동안 또는 특정 작업 소개를 완료한 후 추가 작업을 실행하는 것이 적합할 수 있습니다. 일반적으로 이러한 추가 작업은 라이브 시스템 이미지에만 필요하며 운영 체제에 따라 다릅니다. 패키지 설치 또는 제거와 관련된 여러 작업의 액추에이터가 동일한 경우 존재하는 액추에이터에 해당하는 작업이 설치 또는 제거 시 한 번만 실행됩니다.

액추에이터가 안전한 설치를 진행할 방법을 확인할 수 없을 경우 잘못 지정된 액추에이터로 인해 패키지 설치가 실패할 수 있습니다.

정의된 액추에이터는 다음과 같습니다.

reboot-needed

true 또는 false로 설정할 수 있습니다. 패키지 설치 중 이 액추에이터가 true로 설정된 작업이 설치되거나 업데이트되는 경우 재부트가 필요한 것으로 패키징 트랜잭션을 보급할 수 있습니다. 이미지가 라이브 시스템 이미지인 경우 특정 클라이언트 구현에는 추가 단계(예: 이미지 복제를 사용하여 전체 패키지 작업 수행)가 사용될 수도 있습니다.

disable_fmri, refresh_fmri, restart_fmri, suspend_fmri

해당 액추에이터 각각에는 패키지 설치 또는 제거 시 작동할 서비스 인스턴스의 FMRI에 대한 값이 사용됩니다. disable_fmri를 사용할 경우 svcadm(1M)의 disable 하위 명령에 따라 작업 제거에 앞서 지정된 FMRI가 사용 안함으로 설정됩니다. refresh_fmrirestart_fmri를 사용할 경우 svcadm(1M)의 개별 하위 명령에 따라 작업 설치, 업데이트 또는 제거 후 지정된 FMRI가 새로 고쳐지거나 다시 시작됩니다. 마지막으로 suspend_fmri를 사용할 경우 작업 설치 단계에 앞서 지정된 FMRI가 일시적으로 사용 안함으로 설정되었다가 해당 단계가 완료된 후 다시 사용으로 설정됩니다.

값에는 여러 서비스 인스턴스와 일치하는 패턴이 포함될 수 있습니다. 단, 값은 인스턴스를 지정하지 않은 상태로 암시적으로 처리하는 대신 svcs(1)가 승인한 glob를 명시적으로 처리해야 합니다.

제약 조건 및 고정

패키지가 새 버전으로 전환되거나 시스템에 추가되거나 시스템에서 제거되는 경우 선택되는 버전 또는 제거 허용 여부는 패키지에 대해 적용된 다양한 제약 조건에 따라 달라집니다. 해당 제약 조건은 다른 패키지가 종속성 형식으로 정의할 수도 있고 관리자가 고정 형식으로 정의할 수도 있습니다.

제약 조건의 가장 일반적인 형식은 위의 "Depend 작업"에 설명된 require 종속성에 의해 전달됩니다. 해당 제약 조건은 패키지가 다운그레이드되거나 제거되지 않도록 합니다.

운영 체제의 대부분의 요소는 통합이라는 패키지에 의해 캡슐화됩니다. 이러한 패키지는 주로 incorporate 종속성이 나타내는 제약 조건을 전달합니다.

앞서 설명된 대로 시스템에 통합된 패키지가 존재해야 하는 것은 아니지만 존재할 경우 이 패키지는 포함 최소 버전과 제외 최대 버전을 모두 지정합니다. 예를 들어, 종속 FMRI의 버전이 1.4.3이면 1.4.3보다 낮은 버전은 종속성을 충족하지 않으며 1.4.4 이상 버전도 종속성을 충족하지 않습니다. 단, 단순히 점으로 구분된 시퀀스를 확장한 버전(예: 1.4.3.7)은 허용됩니다.

통합 패키지는 강제로 시스템 요소를 동기식으로 업그레이드하는 데 사용됩니다. 이 패키지가 기본 요구 사항인 구성 요소(예: C 라이브러리 및 커널)도 있고, 특정 버전의 통합에서 참조할 수 있는 확인되고 테스트된 일련의 패키지 버전을 제공하는 용도로만 동기식 업그레이드가 사용되는 구성 요소(예: 종속성이 없는 간단한 Userland 구성 요소)도 있습니다.

통합은 패키지일 뿐이므로 제거할 수 있으며 전달된 모든 제약 조건의 수준도 낮출 수 있습니다. 하지만 제약 조건의 수준을 낮추는 것은 안전하지 않으므로 통합된 패키지에는 Oracle Solaris가 전달한 여러 통합이 필요합니다.

설치된 통합에서 허용하지 않는 버전으로 패키지를 업그레이드하려고 시도하면 요청을 충족시키기 위해 통합의 최신 버전을 찾지 않고 실패합니다. 제약 조건 자체를 이동해야 하는 경우 제약 조건을 지정하는 통합을 제거할 수 없으면 제약 조건의 적합한 버전을 지정하는 버전으로 통합을 업그레이드해야 합니다. 통합을 업그레이드하면 새 버전이 전달하는 제약 조건을 충족하지 않는 모든 통합된 패키지도 업그레이드됩니다.

시스템 관리자는 pkg freeze 명령을 사용하여 패키지를 제약할 수 있습니다. 버전을 제공하지 않을 경우 명명된 패키지는 시스템에 설치된 버전으로 제약됩니다. 버전이 지정된 패키지를 제공할 경우 이 관리 제약 조건 또는 고정은 fmri 속성이 제공된 패키지 버전의 값을 가진 위치에 incorporate 종속성이 설치된 것처럼 작동합니다.

고정은 패키징 시스템에 의해 자동으로 시작되지 않습니다. 제약 조건을 해제하려면 pkg unfreeze 명령을 사용합니다.

게시자 및 저장소

앞서 설명된 대로 게시자는 패키지 클라이언트가 패키지 공급자를 식별하는 데 사용하는 이름입니다. 게시자는 패키지 저장소 및/또는 패키지 아카이브를 사용하여 패키지를 배포할 수 있습니다. 현재 패키지 시스템이 지원하는 두 가지 유형의 저장소는 원본 저장소와 미러 저장소입니다.

원본은 모든 메타 데이터(예: 카탈로그, 매니페스트 및 검색 색인)와 하나 이상의 패키지에 대한 내용(파일)을 포함하는 패키지 저장소입니다. 이미지의 지정된 게시자에 대해 원본이 여러 개 구성된 경우 패키지 클라이언트 API는 패키지 데이터를 검색할 수 있는 최상의 원본을 선택하려고 시도합니다. 원본 저장소가 가장 일반적인 유형의 저장소이며 pkgsend 또는 pkgrecv가 패키지 저장소에서 사용될 때마다 암시적으로 만들어집니다.

미러는 패키지 내용(파일)만 포함하는 패키지 저장소입니다. 이미지의 지정된 게시자에 대해 미러가 하나 이상 구성된 경우 클라이언트 API는 먼저 패키지 내용 검색용 미러를 선택하고 패키지 내용을 검색할 수 있는 최상의 미러를 선택하려고 시도합니다. 미러에 연결할 수 없거나 필요한 내용이 없거나 미러가 너무 느린 경우 클라이언트 API는 구성된 원본 저장소에서 내용을 검색합니다. 미러는 pkg.depotd(1M)의 동적 미러 기능을 통해 신뢰할 수 있는 일련의 클라이언트와 내용을 공유하는 데 사용됩니다. 미러는 패키지 메타 데이터에 대한 액세스를 인증하는 데도 사용되지만 인증 없이 패키지 내용을 배포합니다. 예를 들어, 클라이언트는 액세스를 위해 SSL 키와 인증서 쌍이 필요한 https 원본으로 구성되었을 수도 있고, 패키지 내용을 제공하는 http 미러로 구성되었을 수도 있습니다. 따라서 패키지 내용 검색을 위한 인증 오버헤드를 피하면서 권한이 있는 클라이언트만 패키지를 설치 또는 업데이트할 수 있습니다. 이름이 file인 디렉토리와 해당 상위를 제외하고 저장소의 모든 하위 디렉토리를 제거하여 미러를 만들 수 있습니다. pkg.depotd(1M)의 미러 모드를 사용하여 원본 저장소를 미러로 규정할 수도 있습니다.

페이싯 및 변형

소프트웨어에는 선택적 구성 요소와 상호 배타적인 구성 요소가 포함될 수 있습니다. 선택적 구성 요소의 예로는 로켈과 설명서가 있습니다. 상호 배타적 구성 요소의 예로는 SPARC 또는 x86 및 디버그 또는 비디버그 이진이 있습니다.

IPS에서는 선택적 구성 요소를 페이싯이라 하고 상호 배타적 구성 요소를 변형이라고 합니다. 페이싯과 변형은 패키지 작업에서 태그로 지정됩니다. 각 페이싯 및 변형 태그에는 이름과 값이 있습니다. 단일 작업에 페이싯 및 변형 태그를 여러 개 지정할 수 있습니다. 페이싯 및 변형 태그를 여러 개 가진 구성 요소의 예로는 개발자가 사용하는 아키텍처 관련 헤더 파일이나 SPARC 전역 영역 전용 구성 요소가 있습니다.

변형 태그의 예는 variant.arch=sparc입니다. 페이싯 태그의 예는 facet.devel=true입니다. 페이싯과 변형은 종종 앞에 facet.variant. 없이 지칭되기도 합니다.

페이싯과 변형은 특수한 이미지 등록 정보로 개별 패키지에 설정할 수 없습니다. 이미지에 설정된 페이싯과 변형의 현재 값을 보려면 pkg(1) 매뉴얼 페이지에 표시된 대로 pkg facetpkg variant 명령을 사용합니다. 이미지에 설정된 페이싯과 변형의 값을 수정하려면 pkg change-facetpkg change-variant 명령을 사용합니다.

페이싯은 부울이므로 true(사용) 또는 false(사용 안함)로만 설정할 수 있습니다. 기본적으로 모든 페이싯은 이미지에 true로 설정된 것으로 간주됩니다. 작업의 페이싯 태그는 true 값만 가져야 합니다. 다른 값은 정의되지 않은 동작을 일으킵니다. 이미지에 설정된 페이싯은 doc.man과 같은 전체 페이싯이거나 locale.*와 같은 패턴일 수 있습니다. 이는 페이싯 이름 공간의 일부분을 사용 안함으로 설정하고 그 안의 개별 페이싯만 사용으로 설정하려는 경우 유용합니다. 예를 들어, 다음 예제에 표시된 대로 모든 로켈을 사용 안함으로 설정한 후 한두 개의 특정 로켈만 사용으로 설정할 수 있습니다.

# pkg change-facet locale.*=false
[output about packages being updated]
# pkg change-facet locale.en_US=true
[output about packages being updated]

대부분의 변형은 원하는 수의 값을 가질 수 있습니다. 예를 들어, arch 변형을 i386, sparc, ppc, arm 또는 배포판이 지원하는 어떤 구조로든 설정할 수 있습니다. (i386sparc만 Oracle Solaris에 사용됩니다.) 한가지 예외는 debug 변형입니다. debug 변형은 true 또는 false로만 설정할 수 있습니다. 다른 값은 정의되지 않은 동작을 일으킵니다. 파일 작업에 비디버그 및 디버그 버전이 모두 있는 경우, 다음 예제에 표시된 대로 양쪽 버전에 적용 가능한 debug 변형을 명시적으로 설정해야 합니다.

file group=sys mode=0644 overlay=allow owner=root \
  path=etc/motd pkg.csize=115 pkg.size=103 preserve=true \
  variant.debug.osnet=true

file group=sys mode=0644 overlay=allow owner=root \
  path=etc/motd pkg.csize=68 pkg.size=48 preserve=true \
  variant.debug.osnet=false 

변형을 사용하여 패키지가 설치되도록 하려면 변형 값을 이미지에 설정해야 합니다. archzone 변형은 이미지를 만들어 초기 컨텐츠를 설치하는 프로그램에 의해 설정됩니다. debug.* 변형은 기본적으로 이미지에서 false입니다.

이미지에 설정된 페이싯과 변형은 특정 작업이 설치되는지 여부에 영향을 줍니다.

고유의 페이싯 및 변형 태그를 만들 수 있습니다. 다음은 Oracle Solaris에서 흔히 사용되는 태그입니다.

변형 이름
가능한 값
variant.arch
sparc, i386
variant.opensolaris.zone
global, nonglobal
variant.debug.*
true, false

다음 목록은 Oracle Solaris에서 사용되는 페이싯 태그의 작은 샘플을 보여줍니다.

facet.devel             facet.doc
facet.doc.html          facet.doc.info
facet.doc.man           facet.doc.pdf
facet.locale.de         facet.locale.en_GB
facet.locale.en_US      facet.locale.fr
facet.locale.ja_JP      facet.locale.zh_CN

이미지 정책

이미지 정책은 부울 값이 있는 이미지 등록 정보에 의해 정의됩니다. flush-content-cache-on-successsend-uuid 등록 정보에 대한 설명과 해당 값을 보고 수정하는 방법은 pkg(1) 매뉴얼 페이지의 “이미지 등록 정보”를 참조하십시오.

파일

보다 큰 파일 시스템 내에서는 pkg(5) 이미지가 임의적으로 배치될 수 있으므로 $IMAGE_ROOT 토큰이 상대 경로를 구별하는 데 사용됩니다. 일반적인 시스템 설치에서는 $IMAGE_ROOT가 /와 동일합니다.

$IMAGE_ROOT/var/pkg

전체 또는 부분 이미지에 대한 메타 데이터 디렉토리입니다.

$IMAGE_ROOT/.org.opensolaris,pkg

사용자 이미지에 대한 메타 데이터 디렉토리입니다.

특정 이미지의 메타 데이터 내에서는 특정 파일 및 디렉토리에 손상 복구 및 복구 중 유용한 정보가 포함될 수 있습니다. $IMAGE_META 토큰은 메타 데이터가 포함된 최상위 레벨 디렉토리를 가리키는 데 사용됩니다. 일반적으로 $IMAGE_META는 위에 지정된 두 개 경로 중 하나입니다.

$IMAGE_META/lost+found

패키지 작업 중 이동된 충돌하는 디렉토리 및 파일의 위치입니다.

$IMAGE_META/publisher

각 게시자에 대한 디렉토리를 포함합니다. 각 디렉토리는 게시자 특정 메타 데이터를 저장합니다.

$IMAGE_META 디렉토리 계층의 기타 경로는 개인용이므로 변경할 수 있습니다.

속성

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

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

참조

pkg(1), pkgsend(1), pkg.depotd(1m), pkg.sysrepo(1m), svcs(1), svcadm(1M)

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