Rez 是一個與眾不同的跨平台套件管理器。使用 Rez,您可以建立為給定的一組套件配置的獨立環境。但是,與許多其他套件管理器不同,套件不會安裝到這些獨立環境中。相反,所有軟體包版本都安裝到中央儲存庫中,並且獨立環境引用這些現有軟體包。這意味著配置的環境是輕量級的,並且創建速度非常快,儘管包含數百個包,但通常只需要幾秒鐘即可配置。
請參閱 wiki 以取得完整文件。
典型的套件管理器將套件安裝到環境中
Rez 安裝一次軟體包,並動態配置環境
Rez 取得套件請求列表,並建立目標環境,解決所有必要的套件依賴關係。支援任何類型的軟體包 - 編譯的、python、應用程式和函式庫。
套件儲存在磁碟上的儲存庫中。每個套件都有一個簡潔的定義檔 ( package.py ),用於定義其依賴項、命令(如何配置包含它的環境)以及其他元資料。例如,以下是流行的requests 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 工具將使用者置於包含所請求包的已解析 shell 中:
]$ 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;
允許快速且有效率的建置-安裝-測試週期;
建立類型的 shell:bash、tcsh、其他(shell 可以作為插件添加);
包含支援 git、mercurial 和 svn 的部署系統(作為插件);
環境解析可以儲存到磁碟並在以後重複使用(有點像 VirtualEnv);
高度可插拔,支援五種不同的插件類型來執行從添加新的 shell 類型到新增新的建置系統的操作;
包含版本解析演算法,避免版本衝突;
在渲染的點圖中可視化已解析的環境;
套件是在搜尋路徑中找到的,因此不同的套件可以部署到不同的位置;
支援字母數字版本號;
具有強大的版本要求語法,能夠描述任何版本範圍,以及用於拒絕版本範圍的衝突運算符;
套件「變體」 - 一種定義相同套件版本的不同風格的方法,例如為主機應用程式的多個版本建立的插件;
自訂發布鉤子(例如發布後操作)可以作為插件添加;
具有時間鎖定功能,允許重新建立舊的解析(新的包將被忽略);
包定義是一個單一的、簡潔的文件;
套件使用專用的 python API,以與平台和 shell 無關的方式定義它們對環境的影響(添加到 PATH 等);
擁有基於memcached的快取系統,用於快取環境解析;
具有包過濾功能,允許分階段發布包,例如 alpha 和 beta 包。
如果您發現錯誤、需要協助或想與開發人員交談,請透過以下不同方式與我們聯絡:
報告問題
聊天室:加入#rez
頻道
開始討論
郵件清單:請注意,與任何其他通訊管道相比,郵件清單上的活躍程度要低得多。
目前,CMake 建置無法在 Windows 上使用 Rez 執行,並且會跳過相關測試。修復需要路線圖上的多項變更。用戶已經成功實現了在 Windows 下利用 CMake 和 Rez 的解決方法,但目標是將來在任何平台上提供無縫體驗。詳情請看這個問題