Rez adalah manajer paket lintas platform dengan perbedaan. Dengan menggunakan Rez Anda dapat membuat lingkungan mandiri yang dikonfigurasi untuk sekumpulan paket tertentu. Namun, tidak seperti banyak manajer paket lainnya, paket tidak diinstal ke dalam lingkungan mandiri ini. Sebaliknya, semua versi paket diinstal ke dalam repositori pusat, dan lingkungan mandiri mereferensikan paket-paket yang ada ini. Ini berarti lingkungan yang dikonfigurasikan ringan, dan sangat cepat untuk dibuat, sering kali hanya memerlukan beberapa detik untuk dikonfigurasi meskipun berisi ratusan paket.
Lihat wiki untuk dokumentasi lengkap.
Manajer paket pada umumnya menginstal paket ke suatu lingkungan
Rez menginstal paket satu kali, dan mengonfigurasi lingkungan secara dinamis
Rez mengambil daftar permintaan paket, dan membangun lingkungan target, menyelesaikan semua dependensi paket yang diperlukan. Semua jenis paket perangkat lunak didukung - kompilasi, python, aplikasi, dan perpustakaan.
Paket disimpan dalam repositori di disk. Setiap paket memiliki satu file definisi ringkas ( package.py ) yang mendefinisikan dependensinya, perintahnya (cara mengkonfigurasi lingkungan yang menampungnya), dan metadata lainnya. Misalnya, berikut ini adalah file definisi paket untuk modul python permintaan populer:
name = "requests" version = "2.8.1" authors = ["Kenneth Reitz"] requires = [ "python-2.7+" ] def commands(): env.PYTHONPATH.append("{root}/python")
Paket ini memerlukan python-2.7 atau lebih tinggi. Saat digunakan, subdirektori 'python' dalam lokasi pemasangannya ditambahkan ke variabel lingkungan PYTHONPATH.
Saat lingkungan dibuat dengan rez API atau alat rez-env , algoritme resolusi ketergantungan melacak persyaratan paket dan menyelesaikan daftar paket yang diperlukan. Perintah-perintah dari paket-paket ini digabungkan dan dievaluasi, sehingga menghasilkan lingkungan yang dikonfigurasi. Rez dapat mengkonfigurasi lingkungan yang berisi ratusan paket, seringkali dalam beberapa detik. Keputusan juga dapat disimpan ke file, dan ketika dievaluasi ulang nanti akan merekonstruksi lingkungan yang sama sekali lagi.
Contoh ini menempatkan pengguna ke dalam shell terselesaikan yang berisi paket yang diminta, menggunakan alat 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 > ]$ _
Contoh ini membuat lingkungan yang berisi paket 'houdini' versi 12.5 atau lebih tinggi, dan menjalankan perintah 'hescape -h' di dalam lingkungan tersebut:
]$ 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
Lingkungan yang terselesaikan juga dapat dibuat melalui 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'
Pertama, instal Rez menggunakan Python 3.7+. Unduh sumbernya, dan dari direktori sumber, jalankan (dengan DEST_DIR diganti dengan lokasi instalasi Anda):
]$ python3 ./install.py -v DEST_DIR
Ini menginstal alat baris perintah Rez. Ini akan mencetak pesan di bagian akhir yang memberitahu Anda cara menggunakan Rez ketika instalasi telah selesai. Rez bukan paket Python biasa sehingga Anda biasanya tidak menginstalnya dengan pip atau setup.py. Jangan pindahkan instalasi - instal ulang ke lokasi baru jika ingin mengubah jalur instalasi. Jika Anda ingin menginstal rez untuk beberapa sistem operasi, lakukan instalasi terpisah untuk masing-masing sistem tersebut.
Selanjutnya, Anda perlu membuat beberapa paket Rez yang penting. Alat rez-bind membuat paket Rez berdasarkan perangkat lunak yang sudah terinstal di sistem Anda. Coba ikat daftar paket berikut (perhatikan bahwa untuk Python, Anda mungkin memerlukan hak administratif):
]$ rez-bind platform ]$ rez-bind arch ]$ rez-bind os ]$ rez-bind python
Sekarang Anda seharusnya bisa membuat lingkungan yang berisi Python. Coba ini:
]$ rez-env python -- which python /home/ajohns/packages/python-2.7.8/platform-linux/arch-x86_64/os-Ubuntu-12.04/bin/python
Alat rez-build digunakan untuk membuat paket dan menginstalnya secara lokal (biasanya ke $HOME/packages ). Setelah Anda selesai melakukannya, Anda dapat menggunakannya melalui rez-env , sama seperti paket lainnya:
]$ cd example_packages/hello_world ]$ rez-build --install ... ]$ rez-env hello_world -- hello Hello world!
Mendukung Linux, OSX dan Windows;
Memungkinkan siklus pengujian build-install-yang cepat dan efisien;
Membuat shell dengan tipe: bash, tcsh, other (shell dapat ditambahkan sebagai plugin);
Berisi sistem penerapan yang mendukung git, mercurial dan svn (sebagai plugin);
Keputusan lingkungan dapat disimpan ke disk dan digunakan kembali di lain waktu (seperti VirtualEnv);
Sangat mudah dicolokkan, mendukung lima tipe plugin berbeda untuk melakukan berbagai hal mulai dari menambahkan tipe shell baru, hingga menambahkan sistem build baru;
Berisi algoritma penyelesaian versi, untuk menghindari bentrokan versi;
Memvisualisasikan lingkungan yang diselesaikan dalam grafik titik yang dirender;
Paket ditemukan di jalur pencarian, sehingga paket yang berbeda dapat disebarkan ke lokasi berbeda;
Mendukung nomor versi alfanumerik;
Memiliki sintaks persyaratan versi yang kuat, mampu mendeskripsikan rentang versi apa pun, dan operator konflik untuk menolak rentang versi;
'Varian' paket - cara untuk menentukan varian berbeda dari versi paket yang sama, misalnya plugin yang dibuat untuk beberapa versi aplikasi host;
Kait rilis khusus (seperti operasi pasca-rilis) dapat ditambahkan sebagai plugin;
Memiliki fitur kunci waktu, yang memungkinkan penyelesaian lama dibuat ulang (paket baru diabaikan);
Definisi paket adalah satu file yang ringkas;
Paket menentukan pengaruhnya terhadap lingkungan (menambahkan ke PATH dll) dengan cara agnostik platform dan shell, menggunakan API python khusus;
Memiliki sistem caching berbasis memcached, untuk penyelesaian lingkungan caching;
Memiliki fitur pemfilteran paket, memungkinkan rilis paket bertahap seperti paket alfa dan beta.
Jika Anda menemukan bug, memerlukan bantuan, atau ingin berbicara dengan pengembang, berikut adalah daftar berbagai cara untuk menghubungi kami:
Laporkan masalah
Ruang obrolan: Bergabunglah dengan saluran #rez
Mulailah diskusi
Milis: Perhatikan bahwa mereka kurang aktif di milis dibandingkan di saluran komunikasi lainnya.
Saat ini build CMake tidak berfungsi di Windows dengan Rez dan pengujian terkait dilewati. Perbaikan memerlukan beberapa perubahan yang ada pada peta jalan. Pengguna telah berhasil menerapkan solusi untuk memanfaatkan CMake dengan Rez di Windows, namun tujuannya adalah untuk memberikan pengalaman yang lancar pada platform apa pun di masa depan. Untuk detailnya lihat masalah ini