Debian และ Fedora กำลังพยายามแก้ไขปัญหาการอ้างอิง

ลีนุกซ์รุ่นต่างๆประสบปัญหาในการเพิ่มการอ้างอิง ของโครงการแม้ว่า จำนวนการอ้างอิงสำหรับรหัส Python, Perl และ Ruby จะถูกเก็บไว้ ภายในขอบเขตที่เหมาะสมโปรเจ็กต์ JavaScript จะแบ่งออกเป็นไลบรารีขนาดเล็กมากซึ่งมักจะทำหน้าที่ง่ายๆ

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

เนื่องจากการเชื่อมโยงกันอย่างแน่นหนาของการพึ่งพาไลบรารี JavaScript การอัปเดตแพ็คเกจใด ๆ กับไลบรารีดังกล่าวในการแจกจ่าย มันสามารถทำลายแพ็คเกจอื่น ๆ

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

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

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

นอกจากนี้ลการพึ่งพาข้าม นำไปสู่ความจริงที่ว่าห้องสมุดหลายแห่ง Node.js ไม่สามารถถอนการติดตั้งออกจากระบบได้ซึ่งจะป้องกันไม่ให้คุณถอนการติดตั้งโปรแกรม Node.js อื่น ๆ

เพื่อแก้ไขปัญหานี้โครงการ Fedora เพิ่งอนุมัติแผนการหยุดการก่อตัวเริ่มต้นของแพ็คเกจแยกกับไลบรารีที่ใช้ในโครงการที่ใช้ Node.js

เขาตัดสินใจเริ่มต้นด้วย Fedora 34 เพื่อจัดหาเฉพาะแพ็คเกจพื้นฐานสำหรับ Node.js ด้วยล่ามส่วนหัวไลบรารีหลักไบนารีและเครื่องมือจัดการแพ็คเกจพื้นฐาน (NPM เส้นด้าย)

ในแอปพลิเคชันที่เก็บ Fedora ที่ใช้ Node.js อนุญาตให้ฝังการอ้างอิงที่มีอยู่ทั้งหมดในแพ็กเกจโดยไม่ต้องแบ่งและแยกไลบรารีที่ใช้ในแพ็กเกจแยกต่างหาก

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

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

นักพัฒนาของ Debian กำลังหารือเกี่ยวกับการเปลี่ยนไปใช้รูปแบบการรวมการพึ่งพาแพ็คเกจที่คล้ายกัน นอกเหนือจาก Node.js แล้วการสนทนายังพูดถึงการสร้างแพ็กเกจสำหรับแพลตฟอร์ม Kubernetes และโปรเจ็กต์ในภาษา PHP และ Go ซึ่งมีแนวโน้มที่จะแบ่งออกเป็นการอ้างอิงเพียงเล็กน้อย ยังไม่มีการตัดสินใจใด ๆ แต่หวังว่าเมื่อเวลาผ่านไปปัญหาจะเลวร้ายลงและไม่ช้าก็เร็วโครงการจะถูกบังคับให้ทำบางอย่าง

อินเทอร์เฟซเว็บ gsa (Greenbone Security Assistant) สำหรับเครื่องสแกนความปลอดภัย gvm (Greenbone Vulnerability Management) เป็นตัวอย่างของปัญหาที่ผู้ดูแลแพ็กเกจมี

gsa เวอร์ชันที่จัดส่งโดย Debian นั้นเข้ากันไม่ได้กับ gvm เวอร์ชันใหม่กว่า แต่ไม่สามารถอัปเดต gsa เป็นเวอร์ชันปัจจุบันได้เนื่องจากมีการเปลี่ยนแปลงที่สำคัญและใช้ npm เพื่อดาวน์โหลดไลบรารี Node.js ที่จำเป็น

ไลบรารีที่ร้องขอมีจำนวนมากเกินไปและต้องการการสร้างแพ็คเกจใหม่ใน Debian เพื่อให้ผู้อื่นดูแลเนื่องจากกฎของ Debian ห้ามไม่ให้โหลดส่วนประกอบภายนอกในระหว่างกระบวนการสร้าง

Fuente: https://lwn.net/


แสดงความคิดเห็นของคุณ

อีเมล์ของคุณจะไม่ถูกเผยแพร่ ช่องที่ต้องการถูกทำเครื่องหมายด้วย *

*

*

  1. ผู้รับผิดชอบข้อมูล: Miguel ÁngelGatón
  2. วัตถุประสงค์ของข้อมูล: ควบคุมสแปมการจัดการความคิดเห็น
  3. ถูกต้องตามกฎหมาย: ความยินยอมของคุณ
  4. การสื่อสารข้อมูล: ข้อมูลจะไม่ถูกสื่อสารไปยังบุคคลที่สามยกเว้นตามข้อผูกพันทางกฎหมาย
  5. การจัดเก็บข้อมูล: ฐานข้อมูลที่โฮสต์โดย Occentus Networks (EU)
  6. สิทธิ์: คุณสามารถ จำกัด กู้คืนและลบข้อมูลของคุณได้ตลอดเวลา

  1.   qtkk dijo

    การแยกส่วนของเฟรมเวิร์กและไลบรารีใน ECMAscript นี้ไม่สามารถใช้งานได้
    บทความที่ดี