“ แพ็คเกจต่อไปนี้ได้รับการรักษาไว้แล้ว” หมายความว่าอย่างไร


72

เมื่อทำapt-get upgradeฉันบางครั้งได้รับข้อความว่า "แพคเกจต่อไปนี้ได้รับการเก็บไว้" ตัวอย่างเช่น:

$ sudo apt-get upgrade                                                                                                
Reading package lists... Done                                                                                                          
Building dependency tree                                                                                                               
Reading state information... Done                                                                                                      
The following packages have been kept back:                                                                                            
  linux-headers-server linux-image-server linux-server                                                                                 
0 upgraded, 0 newly installed, 0 to remove and 3 not upgraded.

สิ่งนี้หมายความว่าอะไรกันแน่? เห็นได้ชัดว่าแพคเกจได้รับการระงับและไม่ได้ติดตั้ง แต่ทำไม?

คำถามที่ตามมาคือ: จะอัพเกรดแพ็คเกจที่เก็บไว้เหล่านี้ได้อย่างไร?


2
คำอธิบายที่ชัดเจนสามารถพบได้ที่นี่: debian-administr.org/article/69/…
jplandrain

ฉันสรุปความคิดเห็นและเอกสารทางเทคนิคเกี่ยวกับ: แพคเกจต่อไปนี้ถูกเก็บไว้ฉันขอเชิญคุณอ่านในบทความของฉันและแสดงความคิดเห็นเพื่อให้สามารถปรับปรุงได้ ขอขอบคุณที่สละเวลาในการตอบคำถามนี้ นอกจากนี้ฉันหวังว่าคุณจะพบว่ามีประโยชน์โพสต์ นี่คือลิงค์ของมัน: guillermo.lopez.co.cr/ ......กรุณาอ้างอิงบทความนี้เป็นแหล่งข้อมูลเมื่อมีคนต้องการความช่วยเหลือเกี่ยวกับหัวข้อนี้
ithan

คำตอบ:


63

หากการอัปเกรดนั้นต้องการแพ็กเกจอื่นที่จะลบหรือติดตั้งแพ็คเกจใหม่แพคเกจจะถูก "เก็บไว้" ดังที่man page สำหรับการอัพเกรด apt-getอธิบาย:

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

หากต้องการผ่านสิ่งนี้คุณสามารถทำได้

sudo apt-get --with-new-pkgs upgrade

อนุญาตให้ติดตั้งแพคเกจใหม่ จะแจ้งให้คุณทราบว่าจะติดตั้งแพคเกจใดและแจ้งให้คุณทราบก่อนทำการติดตั้งจริง ๆ


6
เยี่ยมมากนั่นเป็นคำอธิบายที่ชัดเจนที่สุด หน้าคนที่คุณเชื่อมโยงกับ die.net ไม่ได้รวมตัวเลือก --with-new-pkgs ไว้ สิ่งนี้ทำ: manpages.debian.org/cgi-bin/man.cgi?query=apt-get
Charles Roper

1
แต่ฉันได้อัปเดตและอัปเกรดแพ็คเกจทั้งหมดดังนั้นทำไมแพ็คเกจเหล่านั้นจึงไม่อัปเกรด
Nullpointer

2
@Nullpointer "apt-get upgrade" จะไม่ติดตั้งแพ็คเกจใหม่ (เว้นแต่คุณจะให้การตั้งค่าสถานะ) หากไม่มีการอัพเกรดหากแพ็คเกจที่มีอยู่นั้นต้องการการติดตั้งแพ็คเกจใหม่การอัพเกรดนั้นจะไม่เกิดขึ้น
ชาด

18

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


3

ลองapt-get dist-upgradeดู จากหน้าคน:

dist-upgrade

dist-upgradeนอกเหนือจากการทำงานของฟังก์ชั่นupgradeแล้วยังจัดการการเปลี่ยนแปลงที่พึ่งพาได้อย่างชาญฉลาดด้วยแพ็คเกจรุ่นใหม่ apt-get มีระบบการแก้ไขข้อขัดแย้ง "สมาร์ท" และจะพยายามอัปเกรดแพ็กเกจที่สำคัญที่สุดโดยเสียค่าใช้จ่ายที่สำคัญน้อยกว่าหากจำเป็น ดังนั้นdist-upgradeคำสั่งอาจลบแพ็กเกจบางตัวออก /etc/apt/sources.listไฟล์มีรายการสถานที่ที่จะดึงไฟล์แพคเกจที่ต้องการ ดูเพิ่มเติมapt_preferences(5)สำหรับกลไกการแทนที่การตั้งค่าทั่วไปสำหรับแต่ละแพ็คเกจ

แม้ว่าคำสั่งนี้จะใช้ในการอัพเกรดเป็นระบบปฏิบัติการรุ่นหลักรุ่นใหม่ แต่ก็ไม่ได้ทำตามค่าเริ่มต้น ไฟล์/etc/apt/sources.listต้องมีการเปลี่ยนแปลงไปเป็นรุ่นใหม่และแล้วdist-upgradeถูกนำมาใช้


0

แค่ทำ

sudo apt-get install linux-headers-server linux-image-server linux-server

เพื่ออัพเกรดแพ็คเกจที่จัดขึ้น

จากนั้นเรียกใช้apt-get upgradeและคุณจะไม่เป็นไร


5
สิ่งนี้ไม่ถูกต้อง apt-get dist-upgradeจะไม่อัปเกรดระบบปฏิบัติการเป็นเวอร์ชันใหม่ man apt-getเพื่อดูความแตกต่าง
BT643

@ BT643 (และผู้ที่โหวตความคิดเห็น) โปรด downvote คำตอบที่ผิดแทนที่จะเป็นแค่การแสดงความคิดเห็น โดยเฉพาะอย่างยิ่งคำตอบที่โจ่งแจ้งผิด ๆ เช่นนี้ที่ขยายเวลาความเข้าใจผิดที่พบบ่อย เราขึ้นอยู่กับคะแนนโหวตเพื่อนำเนื้อหาที่ดีไปไว้ข้างหน้า แต่ยังเพื่อผลักดันเนื้อหาที่ผิด
terdon

1
@terdon ฉันพยายาม แต่ไม่มีตัวแทนมากพอ :) (ต้องการ 125 ถึง downvote)
BT643

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

ก่อนอื่นให้พิจารณาใช้: sudo apt-get --with-new-pkgs upgradeซึ่งจะไม่มีผลข้างเคียงของการทำให้แพ็คเกจถูกทำเครื่องหมายว่าติดตั้งด้วยตนเอง
l --marc l
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.