Rez는 차이점이 있는 크로스 플랫폼 패키지 관리자입니다. Rez를 사용하면 특정 패키지 세트에 대해 구성된 독립형 환경을 만들 수 있습니다. 그러나 다른 많은 패키지 관리자와 달리 패키지는 이러한 독립 실행형 환경에 설치되지 않습니다. 대신 모든 패키지 버전이 중앙 저장소에 설치되고 독립 실행형 환경은 이러한 기존 패키지를 참조합니다. 즉, 구성된 환경은 가볍고 생성 속도가 매우 빠르며 수백 개의 패키지가 포함되어 있음에도 불구하고 구성하는 데 종종 몇 초 밖에 걸리지 않습니다.
전체 문서는 위키를 참조하세요.
일반적인 패키지 관리자는 환경에 패키지를 설치합니다.
Rez는 패키지를 한 번 설치하고 환경을 동적으로 구성합니다.
Rez는 패키지 요청 목록을 가져와 대상 환경을 구성하여 필요한 모든 패키지 종속성을 해결합니다. 컴파일, Python, 애플리케이션, 라이브러리 등 모든 유형의 소프트웨어 패키지가 지원됩니다.
패키지는 디스크의 저장소에 저장됩니다. 각 패키지에는 종속성, 명령(패키지를 포함하는 환경을 구성하는 방법) 및 기타 메타데이터를 정의하는 간결한 단일 정의 파일( package.py )이 있습니다. 예를 들어, 다음은 널리 사용되는 요청 Python 모듈에 대한 패키지 정의 파일입니다.
name = "requests" version = "2.8.1" authors = ["Kenneth Reitz"] requires = [ "python-2.7+" ] def commands(): env.PYTHONPATH.append("{root}/python")
이 패키지에는 python-2.7 이상이 필요합니다. 사용되면 설치 위치 내의 'python' 하위 디렉터리가 PYTHONPATH 환경 변수에 추가됩니다.
rez API 또는 rez-env 도구를 사용하여 환경을 생성하면 종속성 해결 알고리즘이 패키지 요구 사항을 추적하고 필요한 패키지 목록을 확인합니다. 이러한 패키지의 명령은 연결되고 평가되어 구성된 환경이 됩니다. Rez는 수백 개의 패키지가 포함된 환경을 종종 몇 초 내에 구성할 수 있습니다. 해결 내용은 파일에 저장할 수도 있으며 나중에 다시 평가할 때 동일한 환경을 다시 한 번 재구성합니다.
이 예에서는 rez-env 도구를 사용하여 요청된 패키지가 포함된 확인된 셸에 사용자를 배치합니다.
]$ rez-env requests-2.2+ python-2.6 'pymongo-0+<2.7' You are now in a rez-configured environment. resolved by [email protected], on Wed Feb 26 15:56:20 2014, using Rez v2.0.0 requested packages: requests-2.2+ python-2.6 pymongo-0+<2.7 resolved packages: python-2.6.8 /software/ext/python/2.6.8 platform-linux /software/ext/platform/linux requests-2.2.1 /software/ext/requests/2.2.1/python-2.6 pymongo-2.6.3 /software/ext/pymongo/2.6.3 arch-x86_64 /software/ext/arch/x86_64 > ]$ _
이 예에서는 'houdini' 버전 12.5 이상 패키지가 포함된 환경을 생성하고 해당 환경 내에서 'hescape -h' 명령을 실행합니다.
]$ rez-env houdini-12.5+ -- hescape -h Usage: hescape [-foreground] [-s editor] [filename ...] -h: output this usage message -s: specify starting desktop by name -foreground: starts process in foreground
해결된 환경은 API를 통해 생성될 수도 있습니다.
>>> import subprocess >>> from rez.resolved_context import ResolvedContext >>> >>> r = ResolvedContext(["houdini-12.5+", "houdini-0+<13", "java", "!java-1.8+"]) >>> p = r.execute_shell(command='which hescape', stdout=subprocess.PIPE) >>> out, err = p.communicate() >>> >>> print(out) '/software/ext/houdini/12.5.562/bin/hescape'
먼저 Python 3.7+를 사용하여 Rez를 설치합니다. 소스를 다운로드하고 소스 디렉터리에서 다음을 실행합니다(DEST_DIR을 설치 위치로 바꿈).
]$ python3 ./install.py -v DEST_DIR
그러면 Rez 명령줄 도구가 설치됩니다. 설치가 완료되면 Rez 사용 방법을 알려주는 메시지가 마지막에 인쇄됩니다. Rez는 일반 Python 패키지가 아니므로 일반적으로 pip 또는 setup.py를 사용하여 설치하지 않습니다. 설치를 이동 하지 마십시오 . 설치 경로를 변경하려면 새 위치에 다시 설치하십시오. 여러 운영 체제에 대해 rez를 설치하려면 해당 시스템마다 별도로 설치를 수행하십시오.
다음으로 몇 가지 필수 Rez 패키지를 생성해야 합니다. rez-bind 도구는 시스템에 이미 설치된 소프트웨어를 기반으로 Rez 패키지를 생성합니다. 다음 패키지 목록을 바인딩해 보세요(Python의 경우 관리자 권한이 필요할 수 있음).
]$ rez-bind platform ]$ rez-bind arch ]$ rez-bind os ]$ rez-bind python
이제 Python이 포함된 환경을 만들 수 있습니다. 이것을 시도하십시오:
]$ rez-env python -- which python /home/ajohns/packages/python-2.7.8/platform-linux/arch-x86_64/os-Ubuntu-12.04/bin/python
rez-build 도구는 패키지를 빌드하고 로컬(일반적으로 $HOME/packages )에 설치하는 데 사용됩니다. 그런 다음 다른 패키지와 마찬가지로 rez-env를 통해 사용할 수 있습니다.
]$ cd example_packages/hello_world ]$ rez-build --install ... ]$ rez-env hello_world -- hello Hello world!
Linux, OSX 및 Windows를 지원합니다.
빠르고 효율적인 빌드-설치-테스트 주기를 허용합니다.
bash, tcsh, 기타 유형의 쉘을 생성합니다(쉘은 플러그인으로 추가될 수 있음).
git, mercurial 및 svn(플러그인)을 지원하는 배포 시스템이 포함되어 있습니다.
환경 확인은 디스크에 저장하고 나중에 재사용할 수 있습니다(VirtualEnv와 약간 비슷함).
플러그성이 뛰어나고 새로운 셸 유형 추가부터 새로운 빌드 시스템 추가까지 다양한 작업을 수행할 수 있는 5가지 플러그인 유형을 지원합니다.
버전 충돌을 피하기 위한 버전 확인 알고리즘이 포함되어 있습니다.
렌더링된 도트 그래프로 해결된 환경을 시각화합니다.
패키지는 검색 경로에서 찾을 수 있으므로 다양한 패키지를 다양한 위치에 배포할 수 있습니다.
영숫자 버전 번호를 지원합니다.
모든 버전 범위를 설명할 수 있는 강력한 버전 요구 사항 구문과 버전 범위를 거부하기 위한 충돌 연산자가 있습니다.
패키지 '변형' - 동일한 패키지 버전의 다양한 버전을 정의하는 방법(예: 호스트 앱의 여러 버전용으로 구축된 플러그인)
사용자 정의 릴리스 후크(예: 릴리스 후 작업)를 플러그인으로 추가할 수 있습니다.
이전 해결을 다시 생성할 수 있는 시간 잠금 기능이 있습니다(최신 패키지는 무시됨).
패키지 정의는 간결한 단일 파일입니다.
패키지는 전용 Python API를 사용하여 플랫폼 및 쉘에 구애받지 않는 방식으로 환경에 대한 영향(PATH 등에 추가)을 정의합니다.
캐싱 환경 해결을 위해 memcached 기반 캐싱 시스템이 있습니다.
알파 및 베타 패키지와 같은 단계적 패키지 릴리스를 허용하는 패키지 필터링 기능이 있습니다.
버그를 발견했거나, 도움이 필요하거나, 개발자와 대화하고 싶은 경우, 당사에 연락할 수 있는 다양한 방법 목록은 다음과 같습니다.
문제 신고
채팅방: #rez
채널에 참여하세요
토론 시작
메일링 리스트: 다른 통신 채널보다 메일링 리스트의 활동이 훨씬 적습니다.
현재 CMake 빌드는 Rez가 설치된 Windows에서 작동하지 않으며 관련 테스트를 건너뜁니다. 수정하려면 로드맵에 있는 여러 변경 사항이 필요합니다. 사용자는 Windows에서 Rez와 함께 CMake를 활용하기 위한 해결 방법을 성공적으로 구현했지만 목표는 향후 모든 플랫폼에서 원활한 환경을 제공하는 것입니다. 자세한 내용은 이 문제를 참조하세요.