Rez เป็นตัวจัดการแพ็คเกจข้ามแพลตฟอร์มที่มีความแตกต่าง การใช้ Rez คุณสามารถสร้างสภาพแวดล้อมแบบสแตนด์อโลนที่กำหนดค่าสำหรับชุดแพ็คเกจที่กำหนดได้ อย่างไรก็ตาม ไม่เหมือนกับผู้จัดการแพ็คเกจอื่นๆ ตรงที่แพ็คเกจไม่ได้ติดตั้งในสภาพแวดล้อมแบบสแตนด์อโลนเหล่านี้ แต่เวอร์ชันแพ็คเกจทั้งหมดจะถูกติดตั้งไว้ในที่เก็บข้อมูลส่วนกลางแทน และสภาพแวดล้อมแบบสแตนด์อโลนอ้างอิงถึงแพ็คเกจที่มีอยู่เหล่านี้ ซึ่งหมายความว่าสภาพแวดล้อมที่กำหนดค่านั้นมีน้ำหนักเบาและสร้างได้เร็วมาก โดยมักจะใช้เวลาเพียงไม่กี่วินาทีในการกำหนดค่าแม้ว่าจะมีแพ็คเกจหลายร้อยแพ็คเกจก็ตาม
ดูวิกิสำหรับเอกสารฉบับเต็ม
ผู้จัดการแพ็คเกจทั่วไปจะติดตั้งแพ็คเกจในสภาพแวดล้อม
Rez ติดตั้งแพ็คเกจเพียงครั้งเดียว และกำหนดค่าสภาพแวดล้อมแบบไดนามิก
Rez รับรายการคำขอแพ็กเกจ และสร้างสภาพแวดล้อมเป้าหมาย เพื่อแก้ไขการขึ้นต่อกันของแพ็กเกจที่จำเป็นทั้งหมด รองรับแพ็คเกจซอฟต์แวร์ทุกประเภท - คอมไพล์, Python, แอปพลิเคชันและไลบรารี
แพ็คเกจจะถูกจัดเก็บไว้ในที่เก็บบนดิสก์ แต่ละแพ็คเกจมีไฟล์คำจำกัดความที่กระชับไฟล์เดียว ( package.py ) ซึ่งกำหนดการขึ้นต่อกัน คำสั่ง (วิธีกำหนดค่าสภาพแวดล้อมที่มีอยู่) และข้อมูลเมตาอื่น ๆ ตัวอย่างเช่น ต่อไปนี้เป็นไฟล์คำจำกัดความแพ็กเกจสำหรับโมดูลหลาม คำขอ ยอดนิยม:
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'
ขั้นแรก ติดตั้ง Rez โดยใช้ Python 3.7+ ดาวน์โหลดซอร์ส และรันจากไดเร็กทอรีต้นทาง (โดยแทนที่ 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)
สามารถเสียบปลั๊กได้สูง รองรับปลั๊กอินห้าประเภทที่แตกต่างกันเพื่อทำสิ่งต่าง ๆ ตั้งแต่การเพิ่มประเภทเชลล์ใหม่ ไปจนถึงการเพิ่มระบบการสร้างใหม่
มีอัลกอริธึมการแก้ไขเวอร์ชันเพื่อหลีกเลี่ยงความขัดแย้งของเวอร์ชัน
แสดงภาพสภาพแวดล้อมที่แก้ไขแล้วในกราฟดอทที่เรนเดอร์
พบแพ็คเกจในพาธการค้นหา ดังนั้นแพ็คเกจที่แตกต่างกันจึงสามารถปรับใช้ในตำแหน่งที่ต่างกันได้
รองรับหมายเลขเวอร์ชันตัวอักษรและตัวเลข
มีไวยากรณ์ข้อกำหนดเวอร์ชันที่มีประสิทธิภาพ สามารถอธิบายช่วงเวอร์ชันใดก็ได้ และตัวดำเนินการที่ขัดแย้งกันในการปฏิเสธช่วงเวอร์ชัน
'ตัวแปร' ของแพ็คเกจ - วิธีกำหนดรสชาติที่แตกต่างกันของแพ็คเกจเวอร์ชันเดียวกัน เช่น ปลั๊กอินที่สร้างขึ้นสำหรับแอปโฮสต์หลายเวอร์ชัน
สามารถเพิ่ม hook release แบบกำหนดเอง (เช่น การดำเนินการหลังการเปิดตัว) เป็นปลั๊กอินได้
มีคุณสมบัติล็อคเวลาซึ่งช่วยให้สามารถสร้างการแก้ไขเก่าได้ (แพ็คเกจใหม่จะถูกละเว้น)
คำจำกัดความของแพ็กเกจเป็นไฟล์เดียวที่กระชับ
แพ็คเกจกำหนดผลกระทบต่อสิ่งแวดล้อม (เพิ่มไปยัง PATH ฯลฯ) ในลักษณะแพลตฟอร์มและแบบไม่เชื่อเรื่องเชลล์ โดยใช้ python API เฉพาะ
มีระบบแคชแบบ memcached สำหรับการแก้ไขสภาพแวดล้อมแคช
มีคุณลักษณะการกรองแพ็กเกจ ช่วยให้สามารถเผยแพร่แพ็กเกจแบบทีละขั้น เช่น แพ็กเกจอัลฟ่าและเบต้า
หากคุณพบข้อบกพร่อง ต้องการความช่วยเหลือ หรือต้องการพูดคุยกับนักพัฒนา นี่คือรายการวิธีต่างๆ ในการติดต่อเรา:
รายงานปัญหา
ห้องสนทนา: เข้าร่วมช่อง #rez
เริ่มการสนทนา
รายชื่อผู้รับจดหมาย: โปรดทราบว่ารายชื่อผู้รับอีเมลมีการใช้งานน้อยกว่าช่องทางการสื่อสารอื่นๆ มาก
ปัจจุบัน CMake builds ไม่ทำงานบน Windows ที่มี Rez และการทดสอบที่เกี่ยวข้องจะถูกข้ามไป การแก้ไขจำเป็นต้องมีการเปลี่ยนแปลงหลายอย่างที่อยู่ในแผนงาน ผู้ใช้ได้นำวิธีแก้ปัญหาไปใช้ CMake กับ Rez บน Windows ได้สำเร็จ แต่เป้าหมายคือการมอบประสบการณ์ที่ราบรื่นบนแพลตฟอร์มใด ๆ ในอนาคต สำหรับรายละเอียด โปรดดูปัญหานี้