ทำไมชื่อแพคเกจจึงมีหมายเลขเวอร์ชั่น


15

ในขณะที่ทำงานกับ Ubuntu และดิสทริบิวชันอื่นที่ใช้ Debian ฉันได้สังเกตว่าแพ็คเกจใน repos ซอฟต์แวร์มักจะมีหมายเลขเวอร์ชันหลักอยู่

ตัวอย่างเช่น,

  • Apache: apache2
  • Tomcat: tomcat7
  • PHP: php5
  • ไวน์: wine1.4
  • MySQL: mysql-server-5.5

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

หาก Apache 3 ออกมาในวันพรุ่งนี้ฉันจะต้องติดตั้งapache3แพ็กเกจด้วยตนเองหรือไม่ถ้าฉันต้องการอัพเกรด?”

คำตอบ:


26

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

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

บางครั้งการเปลี่ยนแปลงที่สำคัญเหล่านี้เกิดขึ้นนานมาแล้วในอดีตและตอนนี้ทุกคนอยู่ในเวอร์ชันปัจจุบัน นี่เป็นกรณีของ Apache เช่น การเปลี่ยนแปลง 1.3 ถึง 2.0 นั้นเป็นข้อตกลงที่ใหญ่กว่ามากจากมุมมองที่เข้ากันได้มากกว่าการเปลี่ยนแปลงใด ๆ ของรุ่น 2.x ดังนั้นเมื่อทุกคนปิด 1.3 ไม่จำเป็นที่จะต้องเสนอรุ่น Apache หลายรุ่นภายในระบบปฏิบัติการที่กำหนดอีกต่อไป แต่เมื่อคุณได้มีทุกคนที่ใช้แพคเกจที่มีอยู่ไม่อาร์กิวเมนต์ที่ดีมากสำหรับการเปลี่ยนชื่อกลับไปเพียงapache2 apacheซึ่งจะทำให้เกิดความยุ่งยากในการอัพเกรดที่ไม่จำเป็น นอกจากนี้ในอดีตที่มีความต้องการการรับรู้ที่จะให้สองรุ่นขนานกันชั่วคราวความต้องการอาจจะเกิดขึ้นอีกในอนาคต

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

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

บ่อยครั้งเมื่อแอปพลิเคชันได้รับการปฏิบัติด้วยวิธีนี้มันเป็นเพราะมันมีองค์ประกอบห้องสมุด ตัวอย่างเช่น Apache ไม่ได้เป็นเพียงเว็บเซิร์ฟเวอร์ แต่ยังให้บริการ API การพัฒนาสำหรับปลั๊กอิน ( mod_fooและเช่นนั้น) หากใครบางคนมีmod_somethingลิงก์เก่ากับปลั๊กอิน Apache 1.3 ABI และไม่ได้อัปเกรดให้ใช้ API 2.0 รุ่นใหม่จะสะดวกกว่าหากระบบปฏิบัติการของคุณยังคงเสนอ Apache 1.3 เก่าต่อไปจนกว่าผู้สร้างปลั๊กอินทั้งหมดจะมีโอกาส เพื่ออัปเดตปลั๊กอิน


3

จากสิ่งที่ฉันได้เห็นเหตุผลสำหรับสิ่งนี้คือ:

  • ช่วยให้การโยกย้ายในแพ็คเกจรุ่นใหญ่: เมื่อเปิดตัว PHP 5 อาจต้องมี PHP 4 ติดตั้ง สิ่งนี้อนุญาตให้มีตัวเลือกระหว่างเวอร์ชัน (อย่างน้อยก็จนกว่าเวอร์ชันเก่าจะล้าสมัย)

  • ให้การอัปเดตกับซอฟต์แวร์รุ่นเก่า (เช่นหลังจาก Apache 3 เปิดตัวอาจต้องทำการแพตช์ Apache 2) โดยไม่ต้องอัปเกรดเป็นรุ่นใหญ่กว่าใหม่

เช่นเคอร์เนลของลีนุกซ์มีรุ่นเสถียร 3.5, 3.4.7, 3.2.24, 2.6.35.13 และอื่น ๆ ถ้าคุณใช้ 2.6.35 ในระบบและคุณต้องการรักษามันไว้ เป็นปัจจุบัน แต่ไม่อัปเกรดเคอร์เนลนี้คุณสามารถติดตั้งแพ็คเกจที่เพียงพอ

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