เป็นไปได้หรือไม่ที่จะกำหนดรุ่นเฉพาะของแพ็คเกจซึ่งขึ้นอยู่กับแพ็คเกจหลัก


10

เรามีสภาพแวดล้อมการพัฒนาบน FreeBSD 10.3 ฉันได้ยินมาว่า FreeBSD จัดการการขึ้นต่อกันของแพ็คเกจด้วยวิธีนี้มันมักจะมองหาแพ็คเกจใหม่ล่าสุดทุกรุ่นซึ่งแพ็คเกจหลักนั้นขึ้นอยู่กับ และดูเหมือนจริง ดังนั้นคำถามของฉันคือ:

  1. มันเป็นเรื่องจริงเหรอ? มีเอกสารอย่างเป็นทางการใด ๆ ที่พิสูจน์ได้หรือไม่
  2. วิธีที่ดีที่สุดที่จะเอาชนะปัญหานี้ได้อย่างไร

7
ฉันสงสัยว่าคุณสามารถติดตั้งแพ็คเกจของรุ่นเฉพาะที่คุณต้องการก่อนจากpkg lockนั้นติดตั้งแล้วทุกอย่างที่คุณต้องการ
arrowd

1
นอกจากนี้ยังขึ้นอยู่กับพอร์ต / แพ็คเกจที่คุณต้องการและในเวอร์ชันใด ตัวอย่างเช่นคุณสามารถมีเวอร์ชัน python / postgresql / php ที่แตกต่างกัน บางครั้งมีหลายแพคเกจสำหรับซอฟต์แวร์บางครั้งคุณสามารถสร้างแพ็คเกจพิเศษจากพอร์ต
Raphael Ahrens

3
หากคุณรันการอัปเดต freebsd (หรืออัปเกรด pkg แบบสุ่ม) ใช่มันจะค้นหาเวอร์ชั่นล่าสุดและสามารถติดตั้งได้ ดังที่ arrowd กล่าวว่าตอนนี้ (ตั้งแต่ 9.2 หรือมากกว่านั้น) คุณสามารถล็อค pkg <pkg> ซึ่งควรป้องกันสิ่งที่คุณติดตั้งและการพึ่งพาจากการดัดแปลง YMMV
quadruplebucky

คำตอบ:


1

FreeBSD สร้างแพ็คเกจอย่างไร

โครงการ FreeBSD ใช้ในการสร้างแพ็คเกจสำหรับรุ่นที่ออกและบางครั้งสำหรับสาขาที่มีเสถียรภาพ ผู้สร้างแพ็คเกจเก่าใช้ระบบแบบกระจายชื่อ Portbuild มันจะใช้คลัสเตอร์ขนาดใหญ่ของเครื่อง 2GB-4GB ขนาดเล็กเพื่อสร้างแพ็คเกจ นี่เป็นข้อผิดพลาดได้ง่ายและช้าส่วนใหญ่เกิดจากเครื่องรุ่นเก่า การสร้างแบบเต็มยังคงใช้เวลาหนึ่งสัปดาห์ แพ็คเกจวันนี้สร้างขึ้นโดยใช้เครื่องจักรขนาดใหญ่เครื่องเดียวโดยใช้ Poudriere (จากหน้าเว็บโดย Brian Drewery )

ดูเพิ่มเติม: วิธีอัพเดทแพ็คเกจและพอร์ตต่าง ๆ บน FreeBSD

FreeBSD มีการพัฒนา ABI (และ API) เช่นเดียวกับ Solaris และ Windows ในขณะที่ Linux มีเสถียรภาพ (นิ่ง) ABI (และ API) ดังนั้นด้วยไบนารีเก่าของ Linux จะยังคงทำงานบนระบบปฏิบัติการเวอร์ชันใหม่ในขณะที่ระบบปฏิบัติการที่ไม่ใช่ Linux นี่ไม่ใช่ ' กรณีเสมอ (บางครั้งก็เป็น)

การใช้pkg lockยังสามารถนำไปสู่อาการปวดหัวในขณะที่มันจะล็อค (เสนอเตือน) เมื่อคุณพยายามอัพเกรดโดยใช้pkg upgradeมันยังคงทึกทักว่ารุ่นที่มีหมายเลขสูงกว่าดีกว่า (เป็นที่ต้องการ) และเป็นสิ่งที่คุณต้องการทำ - ดังนั้นจึงขออนุญาต และคุณสามารถอนุญาตได้ แต่มันไม่รับประกันว่าอย่างอื่นจะไม่แตก ดูที่ URL ด้านบนหรือการสนทนานี้: " คุณต้องการ FreeBSD ในการล็อคเวอร์ชันของแพ็คเกจไบนารีที่แจกจ่ายผ่าน pkg สำหรับเวอร์ชัน OS หรือไม่ "

หากแพคเกจหนึ่งถูกล็อคในบางครั้งคุณจะต้องให้สิทธิ์ในการปลดล็อคและทำการอัพเกรดในขณะที่มันจะใช้ได้กับแพ็คเกจเดียว และต้องมีการอัปเกรดหากมีอยู่ในปัจจุบัน)

บล็อกของ Brian Drewery: " FreeBSD Journal: Poudriere " opines:

"หยุดใช้พอร์ตมาสเตอร์, พอร์ตอัปเกรดและพอร์ตบนเซิร์ฟเวอร์ของคุณและเปลี่ยนเป็นแพ็กเกจ

การตั้งค่าแพ็คเกจบิวด์ของคุณเองด้วย Poudriere ใช้เวลาเพียงไม่กี่นาทีและจะช่วยคุณประหยัดเวลาได้มากในอนาคต

...

หากคุณมีระบบ FreeBSD มากกว่าหนึ่งระบบและไม่ได้ใช้แพ็คเกจคุณควร ฉันบำรุงรักษาเซิร์ฟเวอร์เพียง 20 เครื่อง แต่การสร้างพอร์ตในแต่ละระบบใช้เวลาของฉันนานและเสียทรัพยากรบนเครื่องที่ใช้งานจริง เมื่อสร้างพอร์ตบนเซิร์ฟเวอร์หลายเครื่องมันเป็นเรื่องง่ายมากที่จะทำให้ตัวเลือกหรือเวอร์ชั่นของพวกเขาไม่ซิงค์กัน ด้วยการสร้างแพ็คเกจบนระบบเดียวฉันลดภาระของระบบลงและลดปริมาณงานที่ต้องทำและทำให้ระบบทั้งหมดของฉันสอดคล้องกัน แทนที่จะจัดการกับความล้มเหลวเดียวกันในแต่ละระบบฉันเพียงแค่ต้องจัดการกับระบบการสร้าง

แต่การผูกปม ...

ทำไมคุณต้องเบี่ยงเบนจากแพ็คเกจอย่างเป็นทางการ เฟรมเวิร์กพอร์ตจัดเตรียมตัวเลือกรองรับพอร์ตต่างๆเพื่อเปลี่ยนการกำหนดค่าบิวด์ - ไทม์ ไม่ใช่ทุกแอพพลิเคชั่นที่รองรับการกำหนดค่ารันไทม์ บางแอปพลิเคชั่นจะต้องรวบรวมต่างกันขึ้นอยู่กับว่าเปิดใช้งานฟีเจอร์ใด ผู้อื่นมีตัวเลือกเพียงเพื่อลดจำนวนคุณลักษณะและการพึ่งพาในพอร์ตเริ่มต้น สำหรับผู้ดูแลเซิร์ฟเวอร์สิ่งนี้สามารถนำไปสู่การค้นหาอย่างรวดเร็วว่าแพ็คเกจเริ่มต้นบางตัวไม่เป็นไปตามข้อกำหนด

ดังนั้น ...

มีสองสามวิธีในการรับแพ็คเกจแบบกำหนดเอง Pkg รองรับการใช้ที่เก็บหลายแห่ง สามารถตั้งค่าให้ใช้ที่เก็บ FreeBSD อย่างเป็นทางการเป็นที่เก็บหลักและที่กำหนดเองเป็นที่สอง Pkg ไม่ได้ถูก จำกัด โดยจำนวนที่เก็บที่สามารถติดตามได้และสามารถจัดลำดับใหม่สำหรับลำดับความสำคัญได้ ปัญหาของที่เก็บข้อมูลหลายแห่งคือการดูแลรักษายาก เมื่อ Pkg ตรวจพบว่าแพ็คเกจที่ติดตั้งมีตัวเลือกที่แตกต่างกันหรือการอ้างอิงจากที่เก็บซึ่งกำลังติดตามแพคเกจจะถูกติดตั้งใหม่จากรุ่นระยะไกลที่อาจเกิดขึ้น คุณสามารถล็อกแพ็กเกจระหว่างการอัพเกรดด้วยการล็อก pkg PKGNAME และ pkg ปลดล็อก PKGNAME หรือผูกกับที่เก็บที่ระบุด้วย pkg annotate -A REPGNAME ที่เก็บ PKGNAME นอกจากนี้ยังมีปัญหาที่ลึกซึ้งในการทำให้ทรีพอร์ตสำหรับที่เก็บข้อมูลที่กำหนดเองของคุณซิงค์กับแพ็คเกจ FreeBSD เนื่องจากแพ็กเกจถูกสร้างจากสแน็ปช็อตทรีของพอร์ตที่ถ่ายสัปดาห์ละครั้งหากที่เก็บข้อมูลที่กำหนดเองของคุณไม่ตรงกันอาจทำให้เกิดข้อขัดแย้งได้ มันง่ายกว่ามากในการสร้างแพ็คเกจทั้งหมดที่คุณต้องการด้วยตัวเลือกที่คุณต้องการ

การแก้ไขปัญหา:

Poudriere (เขียนว่า poo-dree-year, ภาษาฝรั่งเศสสำหรับ“ powder keg”) ถูกเขียนขึ้นเพื่อแทนที่ Tinderbox ที่เร็วและง่ายขึ้น มันเขียนโดยผู้แต่ง Pkg Baptiste Daroussin และตอนนี้ฉันส่วนใหญ่ดูแลโดย Baptiste และผู้มีส่วนร่วมอื่น ๆ มันได้กลายเป็นเครื่องมือทดสอบพอร์ต FreeBSD และการสร้างแพ็คเกจอย่างรวดเร็ว มันเป็นเครื่องมือสร้างคลัสเตอร์อย่างเป็นทางการและยังใช้โดยโครงการ FreeBSD Ports สำหรับทดสอบแพทช์การกวาดในสิ่งที่เรียกว่า“ exp-run” มันถูกเขียนใน POSIX เชลล์และกำลังถูกย้ายไปยังส่วนประกอบ C อย่างช้าๆ แตกต่างจาก Tinderbox มันไม่มีการพึ่งพาและไม่ต้องการฐานข้อมูล. มันได้รับการปรับปรุงอย่างมากเพื่อให้ขนานอย่างมากในการดำเนินการทั้งหมด มันใช้คุกเพื่อสร้างพอร์ตในสภาพแวดล้อมแบบ sandbox ในเงื่อนไขที่เข้มงวดมาก การสร้างคุกจะทำครั้งเดียวด้วยคำสั่งง่ายๆ ในระหว่างการสร้างคุกจะถูกโคลนโดยอัตโนมัติสำหรับแต่ละ CPU ที่ใช้เพื่อให้พอร์ตสะอาดสำหรับการสร้าง ".

การตั้งค่าพื้นที่เก็บข้อมูลของคุณด้วยpoudriereช่วยให้คุณมีความยืดหยุ่นของพอร์ตและความสะดวกในการจัดการแพ็คเกจ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.