Rez의 기본 개념 요약
Rez는 패키지와 환경 관리를 위한 강력한 도구입니다. Rez의 주요 개념은 아래와 같습니다.
1. Rez의 패키지 관리 방식
- Rez는 요청받은 패키지 목록을 기반으로 환경을 구성합니다.
- 패키지 충돌(예: 동일 패키지의 서로 다른 버전 요청)이 발생하면 이를 방지하거나 이유를 명확히 알려줍니다.
- 환경 구성 요청 예시:
- 최신 버전의 Houdini: houdini
- 특정 버전 Maya: maya-2009.1
- Boost와 호환되는 Houdini: houdini with boost-1.37.0
Rez는 명령줄 도구 rez-env를 통해 패키지 요청을 처리하고, 설정된 환경 내에서 작업할 수 있도록 지원합니다.
2. 버전 관리
- Rez 버전 번호는 알파벳, 숫자, 밑줄 등의 조합으로 구성됩니다.
- 버전 비교는 엄격한 규칙에 따라 수행되며, 예를 들어 다음 순서로 비교됩니다:
- 밑줄 _
- 소문자 → 대문자 → 숫자
- 0으로 채워진 숫자는 덜 채워진 숫자보다 작음 (예: 01 < 1).
예제:
- foo-1.0 < foo-1.0.1
- alpha < beta
- 02 < 2.
3. 패키지 정의
Rez에서 패키지는 소프트웨어와 종속성 정보를 담은 독립적인 객체입니다. 패키지 정의 파일(package.py)은 다음 정보를 포함합니다:
- name: 패키지 이름 (예: foo)
- version: 버전 정보 (예: 1.0.0)
- requires: 패키지의 종속성 (예: "python-2.6", "utils-1.1+")
- commands: 환경 구성 시 실행될 명령어.
예시:
name = "foo"
version = "1.0.0"
requires = ["python-2.6", "utils-1.1+<2"]
def commands():
env.PYTHONPATH.append("{root}/python")
env.PATH.append("{root}/bin")
4. 패키지 저장소와 검색 경로
- Rez는 패키지를 특정 디렉터리 구조에 저장합니다. 예를 들어:
/packages/inhouse/foo/1.1/
/packages/inhouse/foo/1.2/
- REZ_PACKAGES_PATH 환경 변수를 설정하여 패키지 검색 경로를 변경할 수 있습니다.
- 동일 패키지가 여러 저장소에 있을 경우, 검색 경로에서 앞선 저장소의 패키지가 우선됩니다.
5. 패키지 요청
Rez에서 패키지 요청은 특정 규칙에 따라 작성됩니다:
- "foo": 모든 버전
- "foo-1": foo-1.x의 모든 버전
- "foo-1+": foo-1 이상의 버전
- "foo-1.2+<2": foo-1.2 이상, foo-2 미만.
Rez는 약한 종속성(~) 및 충돌(!) 연산자를 지원합니다:
- 약한 종속성: 해당 패키지가 있으면 지정된 범위 내에서 사용.
- requires = ["~python-2.7.3"]
- 충돌 연산자: 특정 패키지 버전을 제외.
rez-env maya_utils '!maya-2015.6'
6. 종속성 해결 및 환경 구성
Rez는 요청받은 패키지 목록을 기반으로 충돌 없이 가능한 최신 버전을 선택하여 환경을 구성합니다.
- 예: foo-1.3와 bah-4를 요청했을 때, 종속성 충돌로 인해 구성 실패 시 관련 정보를 제공합니다.
- 환경 구성 명령:
rez-env foo bah
구성된 환경은 기존 환경을 변경하지 않고 하위 셸로 제공됩니다. 종료하려면 exit 명령어를 사용합니다.
'REZ > REZ?' 카테고리의 다른 글
Context (0) | 2024.12.24 |
---|---|
Releasing packages (0) | 2024.12.24 |
Building packages (0) | 2024.12.24 |
Getting started (0) | 2024.12.24 |
installation (0) | 2024.12.24 |