본문 바로가기
REZ/REZ?

Basic concepts

by 르면가게 2024. 12. 24.

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 버전 번호는 알파벳, 숫자, 밑줄 등의 조합으로 구성됩니다.
  • 버전 비교는 엄격한 규칙에 따라 수행되며, 예를 들어 다음 순서로 비교됩니다:
    1. 밑줄 _
    2. 소문자 → 대문자 → 숫자
    3. 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