apt กล่าวว่าบรรจุภัณฑ์ได้ถูกเก็บไว้คืนแล้วจะทำอย่างไร?


23

ผลลัพธ์ของapt-get upgradeคือ:

The following packages have been kept back:
certbot python-acme python-certbot python-certbot-apache python-cryptography python-openssl

สิ่งนี้หมายความว่า? ฉันควรลงมือทำอะไร? ถ้าเป็นเช่นนั้นอะไร

คำตอบ:


37

โซลูชันที่รวดเร็วและง่ายดาย:

ฉันมีปัญหาเดียวกันหลายครั้ง อย่าทำsudo apt-get dist-upgradeก่อน สำคัญมาก. **** หมายเหตุ: วิธีนี้ใช้สำหรับเครื่องที่ใช้ Debian แต่ไม่สามารถใช้กับKDE Neonได้ ในการอัปเดต KDE Neon คุณต้องใช้sudo pkcon update****

ทำไม?

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

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

ฉันไม่มีปัญหากับวิธีแก้ไขปัญหาต่อไปนี้ มันค่อนข้างง่ายและรวดเร็ว


ก่อนอื่นให้ทำดังนี้

apt list --upgradable

  • นี่จะแสดงรายการแพ็คเกจที่สามารถอัพเกรดได้

ถัดไปทำสิ่งนี้:

  • เริ่มต้นที่จุดเริ่มต้นของรายการด้วยแพ็คเกจและประเภทแรก:

sudo apt-get install package-name-here

  • สิ่งนี้จะทำงานผ่านกระบวนการติดตั้งและดึง / ติดตั้งการอ้างอิง

หลังจากกระบวนการดังกล่าวเสร็จสิ้นให้ทำสิ่งนี้:

apt list --upgradable

  • นี่จะแสดงให้เห็นอีกครั้งว่าแพ็คเกจใดที่สามารถอัพเกรดได้ รายการแพ็คเกจของคุณควรจะลดลง ติดตามรายการแพคเกจและประเภทapt list --upgradableหลังจากติดตั้งแต่ละแพ็คเกจ การดำเนินการนี้จะใช้เวลาสองสามนาที

สุดท้าย:

sudo apt-get autoclean

sudo apt-get update && sudo apt-get dist-upgrade

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

ถ้าด้วยเหตุผลบางอย่างโซลูชันนี้ใช้ไม่ได้กับคุณโปรดดูคำตอบของผู้ใช้ GAD3R ด้านล่าง มันยังเป็นทางออกที่ดี

ขอบคุณ


1
สำหรับฉันแพคเกจคือ ubuntu-minimal คำแนะนำของคุณทำงานได้อย่างสมบูรณ์
DeanM

อย่าใช้โซลูชันนี้หากคุณใช้ KDE Neon
เกรกอรี่สมิ ธ แมน

11

สิ่งนี้หมายความว่า?

The following packages have been kept back:

คำตอบอยู่ที่นี่

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

ฉันควรลงมือทำอะไร?

คุณต้องใช้dist-upgradeเพื่อติดตั้งการอ้างอิงใหม่และอัพเกรดแพ็คเกจ:

sudo apt-get dist-upgrade

ปัญหาสามารถแก้ไขได้ด้วยการรันdist-upgradeหากไม่ต้องการ:

แก้ไขการพึ่งพาที่หัก

sudo apt-get -f install 

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

sudo apt-get autoclean

พักแพ็คเกจที่ต้องการ:

echo "<package_name> hold" | dpkg --set-selections

กำหนดค่าแพคเกจที่กำหนดชื่อใหม่:

dpkg-reconfigure <package_name>

3

จากคำตอบ Unix SE นี้ :

ประการแรกดังกล่าวข้างต้นโปรดอย่าอัพเกรดระบบการผลิตใด ๆ ! ในขณะที่การอัพเกรด dist จะ "แก้ปัญหา" การสำรองแพคเกจกลับไม่ใช่ทางออกของปัญหานี้และอาจทำให้คุณโศกเศร้ามากกว่าดีถ้าคุณเรียกใช้โดยไม่ทราบถึงผลกระทบต่อระบบของคุณ

หากอัพเกรดแพคเกจที่ต้องมีการติดตั้งแพคเกจเพิ่มเติมมันจะ "กลับมาเก็บไว้" sudo apt-get upgradeเมื่อทำงาน

ดังกล่าวข้างต้นคุณสามารถติดตั้งแพคเกจ "เก็บกลับ" เหล่านี้ด้วยตนเองโดยเรียกใช้อย่างชัดเจนsudo apt-get install [paste kept back packages here]แต่จะทำเครื่องหมายแพ็คเกจเหล่านี้ว่า "ติดตั้งด้วยตนเอง" ซึ่งมักจะไม่ใช่สิ่งที่เราต้องการ

โดยอัตโนมัติติดตั้งแพคเกจเพิ่มเติมใด ๆ ที่จำเป็นในการอัพเกรด "เก็บไว้กลับ" แพคเกจในขณะที่ไม่ทำเครื่องหมาย "เก็บไว้กลับ" sudo apt-get --with-new-pkgs upgradeแพคเกจติดตั้งด้วยตนเองทำงานเพียง


เพิ่มเติมเกี่ยวกับ--with-new-pkgsและผลข้างเคียงของทางเลือกอื่น ๆที่นี่
Pablo

2

ฉันรวมคำตอบนี้ไว้ในบล็อกของฉัน หากคุณต้องการที่จะเห็นว่าคุณสามารถไปที่นั่นได้จากลิงค์นี้

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

gnome-software gnome-software-common linux-generic linux-headers-generic linux-image-generic snapd ubuntu-core-launcher ubuntu-software

อย่าเพิ่งพิมพ์sudo apt-get dist-upgradeมันอันตรายมากเพราะติดตั้งการอัปเดตที่รอดำเนินการทั้งหมด สิ่งนี้อาจทำให้สภาพแวดล้อมการทำงานของคุณอยู่ในสภาพที่ไม่มั่นคงอย่างมาก

ดังนั้นความคิดเห็นของฉันคือการใช้ชื่อเสียง

sudo apt-get install [package]

คุณสามารถแทนที่[package]ด้วยแพ็คเกจใดก็ได้ในข้อความแสดงข้อผิดพลาด นอกจากนี้คุณสามารถใส่มันเป็นรายการ (เพียงแค่คัดลอกและวาง) เป็นตัวอย่างในกรณีของฉันฉันสามารถป้อน

sudo apt-get install gnome-software gnome-software-common linux-generic linux-headers-generic linux-image-generic snapd ubuntu-core-launcher ubuntu-software

ถ้าคุณต้องการที่จะทำ

sudo apt-get dist-upgrade

ด้วยเหตุผลบางอย่างให้ตรวจสอบรายชื่อของแพ็คเกจโดยใช้ตัวเลือกจำลอง-s( sudo apt-get -s dist-upgrade) หรือไม่มี-sตัวเลือกที่คุณสามารถยุติการทำงานก่อนที่จะยอมรับ (คุณสามารถเลือกตัวเลือกได้เสมอ)


2

เมื่อเร็ว ๆ นี้การปรับปรุงความปลอดภัย Debian แนะนำการอ้างอิงใหม่บางอย่าง ในกรณีนี้linux-imageแพคเกจเริ่มต้องlinux-firmwareหมู่อื่น ๆ unattended-upgradeดังนั้นพวกเขาจึงถูกจัดขึ้นกลับมาและไม่ได้ติดตั้งโดย หลังจากการทดสอบและการยืนยันบางอย่างฉันสามารถเลือกติดตั้งเฉพาะแพ็คเกจเหล่านั้นได้ในขณะที่ไม่ได้สัมผัสการอัปเดตที่รอดำเนินการอื่น ๆ :

apt-get -yy install $(apt-get -s upgrade | sed '1,/kept back/d;/will be upgraded/,$d')


1

บทความนี้เป็นข้อสรุปว่าทำไมสิ่งนี้จึงเกิดขึ้น:

หากการพึ่งพามีการเปลี่ยนแปลงในแพ็คเกจใดแพ็คเกจหนึ่งที่คุณติดตั้งดังนั้นจึงต้องติดตั้งแพ็คเกจใหม่เพื่อดำเนินการอัปเกรด

วิธีแก้ปัญหานี้คือการติดตั้งพวกเขาอย่างชัดเจนด้วย

sudo apt install [packages]

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

sudo apt-mark auto [packages]

เพื่อป้องกันไม่ให้สิ่งนี้เกิดขึ้นในตอนแรกฉันแนะนำให้ใช้

sudo apt --with-new-pkgs upgrade

เพื่ออัพเกรดแพ็คเกจในอนาคตซึ่งจะช่วยให้การติดตั้งแพคเกจใหม่เพื่อตอบสนองการเปลี่ยนแปลงในการพึ่งพา


ยกนิ้วให้--with-new-pkgs! และฉันขอย้ำอีกครั้งว่า " อย่าอัปเกรดระบบการผลิตใด ๆ ! ในขณะที่การอัพเกรด dist จะ" แก้ปัญหา "เก็บแพคเกจกลับไม่ใช่ทางออกของปัญหานี้และอาจทำให้คุณเศร้าโศกมากกว่าคุณ เรียกใช้โดยไม่ทราบถึงผลกระทบต่อระบบของคุณ "
xpt
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.