Rez は、一味違うクロスプラットフォームのパッケージ マネージャーです。 Rez を使用すると、特定のパッケージ セット用に構成されたスタンドアロン環境を作成できます。ただし、他の多くのパッケージ マネージャーとは異なり、パッケージはこれらのスタンドアロン環境にはインストールされません。代わりに、すべてのパッケージ バージョンが中央リポジトリにインストールされ、スタンドアロン環境はこれらの既存のパッケージを参照します。これは、構成された環境が軽量であり、作成が非常に速く、多くの場合、数百のパッケージが含まれているにもかかわらず、構成にかかる時間はわずか数秒であることを意味します。
完全なドキュメントについては wiki を参照してください。
一般的なパッケージ マネージャーは、環境にパッケージをインストールします。
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 を利用するための回避策を実装することに成功しましたが、目標は、将来的にはあらゆるプラットフォームでシームレスなエクスペリエンスを提供することです。詳細については、この問題を参照してください