นี่คือคำอธิบายรายละเอียดเพิ่มเติมของกระบวนการ ขออภัยข้อความยาวเกินไป
ประสบการณ์ของฉันมาจาก Debian ซึ่งทั้งบรรจุภัณฑ์และระบบอัพเกรดที่ใช้ในอูบุนตูนั้นถูกคิดค้น การอัพเกรดความปลอดภัยของ Ubuntu ทุกวันนั้นสอดคล้องกับการทำงานapt-get upgrade
ซึ่งโดยปกติแล้วจะไม่ลบซอฟต์แวร์ใด ๆ การอัพเกรดครั้งใหญ่นั้นสอดคล้องกับapt-get dist-upgrade
ช่วงเวลาที่สามารถแลกเปลี่ยนแพคเกจซอฟต์แวร์ได้อย่างสมบูรณ์
ที่จริงแล้วส่วนประกอบระดับต่ำมากมักจะไม่แลกเปลี่ยนในระหว่างการอัพเกรด ทันทีหลังการอัพเกรดคุณควรพบเคอร์เนลสองตัวและอิมเมจเริ่มต้นในไดเรกทอรี / boot ของคุณ เพราะนี่คือสิ่งที่แตกต่างจากองค์ประกอบของเคอร์เนลโปรแกรมที่ไม่สามารถใช้ร่วมกันได้ หากความต้องการเกิดขึ้นในการโหลดไดรเวอร์อุปกรณ์ใหม่ในระหว่างการอัพเกรดพวกเขาจะต้องเข้ากันได้กับเคอร์เนลที่กำลังทำงานอยู่ หลังจากระบบบู๊ตด้วยเคอร์เนลใหม่สามารถลบเคอร์เนลเก่าออกได้ ครั้งสุดท้ายที่ฉันตรวจสอบสิ่งนี้ต้องทำด้วยตนเองฉันไม่รู้ว่าตัวอัพเดตปัจจุบันจัดการกับสิ่งนี้ได้อย่างไร นี่คือ BTW เหตุผลหลักว่าทำไมเคอร์เนลอิมเมจถึงหมายเลขเวอร์ชันในชื่อไฟล์ดังนั้นคุณสามารถติดตั้งเคอร์เนลเวอร์ชันต่างกันได้ในเวลาเดียวกัน เหมือนกันสำหรับเส้นทางโมดูล (/ lib / modules / ... )
แพคเกจซอฟต์แวร์จะได้รับการอัพเกรดหนึ่งต่อหนึ่งเริ่มต้นด้วยแพ็คเกจที่ต่ำที่สุดในลำดับชั้นการพึ่งพา โดยทั่วไปเป็นไลบรารีโปรแกรมเช่น libc และอื่น ๆ ลำดับที่แพ็กเกจถูกอัพเดตไม่ได้ฮาร์ดโค้ด แต่คำนวณแบบไดนามิกเนื่องจากการพึ่งพาแพ็กเกจถูกแก้ไข ในกรณีส่วนใหญ่โปรแกรมเก่าสามารถทำงานกับไลบรารีใหม่ได้ดังนั้นจึงไม่เป็นปัญหาหากห้องสมุดเหล่านั้นถูกแทนที่ก่อน
คุณต้องเข้าใจที่นี่ว่าระบบแตกต่างระหว่างแพ็คเกจที่ติดตั้งด้วยตนเอง (เช่นแพ็คเกจที่การติดตั้งที่คุณร้องขอโดยตรงเช่น Chromium) และแพคเกจที่ติดตั้งโดยอัตโนมัติซึ่งติดตั้งเพียงเพื่อตอบสนองการพึ่งพาแพ็คเกจที่ติดตั้งด้วยตนเองเท่านั้น )
สำหรับแต่ละโปรแกรมที่ติดตั้งด้วยตนเองตัวอัปเดตจะค้นหาเวอร์ชันที่ใหม่กว่า บ่อยครั้งที่โปรแกรมเหล่านั้นเป็นเพียงเมตาแพ็คเกจเช่น "ubuntu-desktop" ซึ่งไม่มีข้อมูลและเป็นเพียงแค่การพึ่งพา ไลบรารี่ที่ขึ้นต่อกันเวอร์ชั่นใหม่จะถูกดึงเข้ามาเนื่องจากมันจะถูกร้องขอโดยโปรแกรมที่มีการอัพเดทโดยตรง (ร้องขอด้วยตนเอง) ตัวอัปเดตจะพยายามติดตั้งเวอร์ชันที่ใช้งานได้ใหม่ล่าสุดของแพ็คเกจที่ขึ้นต่อกัน (ในระหว่างการอัปเกรดใด ๆ
โปรแกรมที่ไม่สามารถทำงานกับเวอร์ชันไลบรารีใหม่ไม่สามารถเริ่มในช่วงเวลาหลังจากไลบรารีได้รับการอัพเกรดและก่อนที่ตัวโปรแกรมเองจะได้รับการอัพเกรดด้วย หากโปรแกรมเหล่านั้นควรจะทำงานก่อนที่จะทำการอัพเกรดไลบรารีพวกเขาจะยังคงทำงานต่อไปได้เพราะเวอร์ชั่นไลบรารีเก่าจะยังคงอยู่ในหน่วยความจำตราบใดที่ยังมีการใช้งานอยู่ กันไปสำหรับโปรแกรมที่เริ่มต้นก่อนที่จะได้รับการอัพเกรด สิ่งเหล่านี้จะไม่ให้คุณสมบัติใหม่จนกว่าจะถูกยกเลิกและรีสตาร์ท
หลังจากอัปเดตบางไลบรารี (หรือการอ้างอิงทั่วไป) จะถูกกำพร้า สิ่งเหล่านี้คือไลบรารีที่ต้องการโดยเวอร์ชันโปรแกรมเก่า แต่ไม่ต้องการเวอร์ชันใหม่อีกต่อไป เนื่องจากแพ็คเกจเหล่านี้มีการทำเครื่องหมายว่าติดตั้งโดยอัตโนมัติและเนื่องจากไม่มีโปรแกรม prgram ที่ติดตั้งด้วยตนเองที่เกี่ยวข้องกับพวกเขาอีกต่อไปแพคเกจเหล่านี้สามารถตั้งและลบได้ง่าย คุณสามารถสังเกตได้ว่านี่เป็นขั้นตอนสุดท้ายของกระบวนการอัปเดต (ตัวอัปเดตจะ "ลบแพคเกจที่ล้าสมัย" หรือสิ่งที่คล้ายกัน)
แพคเกจบางอย่างจะถูกติดตั้งซึ่งไม่ได้ติดตั้งก่อนหน้านั้นเป็นเพียงการอ้างอิงใหม่ซึ่งถูกทำเครื่องหมายว่าติดตั้งโดยอัตโนมัติและสามารถลบออกได้หากความต้องการสำหรับพวกเขาหายไปในอนาคต
กลไกนี้ยังอนุญาตให้มีการแลกเปลี่ยนโปรแกรมผู้ใช้ทั้งหมด เช่นการเปลี่ยนจาก Gnome2 เป็น Unity เนื่องจากทั้งสองเป็นเพียงการพึ่งพาอัตโนมัติของ ubuntu-desktop ซึ่งเป็นหนึ่งในไม่กี่แพคเกจสำหรับรุ่นใหม่ที่มีการร้องขอจริงในสถานที่แรก
โดยปกติโปรแกรมจะไม่ขึ้นอยู่กับรุ่นของเคอร์เนลระบบปฏิบัติการดังนั้นพวกเขาจะทำงานได้ดีกับเคอร์เนลที่กำลังทำงานอยู่
นอกเหนือจากทั้งหมดนี้ฉันสงสัยว่าตัวอัปเดตของ Ubuntu โยนการแก้ไขและการแก้ปัญหาเฉพาะบางอย่างลงในส่วนผสมเพื่อหลีกเลี่ยงสถานการณ์ที่ทฤษฎีนี้แตก
อย่างที่คุณเห็นในระหว่างการอัพเดทมีเงื่อนไขที่ดีมากที่ระบบสามารถใช้งานได้ในบางส่วนเท่านั้น สิ่งที่ควรจะไปผิดพลาดระหว่างการปรับปรุงที่คุณจะมีโอกาสมากที่สุดจะเหลือด้วยระบบเสีย บ่อยครั้งที่แม้แต่โปรแกรมที่ไม่สามารถซ่อมแซมได้ง่ายเนื่องจากโปรแกรมอัปเกรดอาจได้รับผลกระทบเช่นกัน โปรดจำไว้ว่าโปรแกรมที่มีการพึ่งพาที่ไม่ทำงานสามารถทำงานต่อไปได้ แต่ไม่สามารถเริ่มใหม่ได้ตราบใดที่การพึ่งพานั้นใช้งานไม่ได้
คุณสามารถใช้โปรแกรมบรรทัดคำสั่งapt-mark
เพื่อค้นหาแพ็คเกจที่ทำเครื่องหมายว่าติดตั้งด้วยตนเองและได้รับการติดตั้งโดยอัตโนมัติ คุณสามารถสลับเครื่องหมายเหล่านั้นโดยใช้โปรแกรมเดียวกัน นี่จะส่งผลโดยตรงต่อกระบวนการอัพเดต
ในการตั้งค่าซอฟต์แวร์ที่ซับซ้อนกว่าในบางครั้ง Updater จะขอให้คุณแก้ไขการอ้างอิงด้วยตนเอง เช่นเมื่อโปรแกรมที่ติดตั้งด้วยตนเองได้รับการอัพเดตและขอไลบรารีเวอร์ชันใหม่ในขณะที่อีกโปรแกรมที่ติดตั้งด้วยตนเองนั้นขึ้นอยู่กับไลบรารี่รุ่นเก่าและไม่สามารถทำงานกับไลบรารี่รุ่นใหม่ได้ จากนั้นคุณจะต้องทำการเลือกของคุณไม่ว่าจะยกเลิกโปรแกรมใดโปรแกรมหนึ่งหรือยกเลิกการอัพเกรดทั้งสองโปรแกรม เนื่องจากการพึ่งพามักจะซับซ้อนสิ่งนี้อาจทำให้ยุ่งเหยิงเร็วมาก (คุณอาจเคยได้ยินคำว่า "นรกพึ่งพา")
ตอนนี้คำถามเฉพาะ:
- เมื่อมีการเปลี่ยนแปลงโครงสร้างพื้นฐานระดับต่ำ (ระดับต่ำเช่นเคอร์เนลไดรเวอร์ไลบรารี ฯลฯ อะไรก็ตามที่ผู้ใช้ไม่ได้โต้ตอบโดยตรง) จะเกิดอะไรขึ้นกับไบนารีที่เลิกใช้แล้ว
- ตกลง ... ฉันครอบคลุมสิ่งนี้แล้ว
- เกิดอะไรขึ้นกับแอปที่เลิกใช้แล้วอย่างสมบูรณ์ ตัวอย่างเช่น Unity 2D (หรือซอฟต์แวร์อื่น ๆ ถูกยกเลิก / ไม่มีผู้ดูแลที่มีแพ็คเกจไม่ได้อยู่ใน repo ใหม่)
- หากติดตั้งแอปด้วยตนเองครั้งเดียวมันจะยังคงอยู่ในระบบซึ่งมักจะทำให้เกิดการพึ่งพาที่ฉันอธิบาย
- ubuntu-desktop เป็น metapackage ที่ดึงแอพพลิเคชั่น Ubuntu เริ่มต้นเป็นการอ้างอิง หากฉันลบ Firefox และติดตั้ง Chrome แล้ว Firefox จะยังคงถูกดึงเข้ามาเป็นส่วนหนึ่งของการอัพเกรดหรือไม่
- ตราบใดที่มันเป็นเบราว์เซอร์มาตรฐานของรีลีสใหม่ใช่ Chromium จะได้รับการอัพเกรดด้วย ฉันไม่แน่ใจว่าคุณสามารถลบ Firefox โดยไม่ต้องลบ ubuntu-desktop โปรดทราบว่านอกเหนือจากการพึ่งพาอย่างเข้มงวดแล้วระบบแพ็กเกจยังรู้ถึงแนวคิดของคำแนะนำซึ่งโดยปกติจะติดตั้งซอฟต์แวร์เช่นการพึ่งพา แต่สามารถถอนการติดตั้งได้ในภายหลังโดยไม่ส่งผลกระทบต่อสิ่งอื่นใด
- ยิ่งกว่านั้นจะเกิดอะไรขึ้นถ้าแอปเดียวเคยใช้แพ็คเกจ -x และไม่ทำเช่นนั้นในรีลีสใหม่ แพ็คเกจ -x จะได้รับการอัพเกรดพร้อมกับแพ็คเกจอื่น ๆ แม้จะถูกกำพร้าหรือไม่
แค่ถามฉันว่าคุณยังมีคำถามอีกไหม