ผลลัพธ์ของapt-get upgrade
คือ:
The following packages have been kept back:
certbot python-acme python-certbot python-certbot-apache python-cryptography python-openssl
สิ่งนี้หมายความว่า? ฉันควรลงมือทำอะไร? ถ้าเป็นเช่นนั้นอะไร
ผลลัพธ์ของapt-get upgrade
คือ:
The following packages have been kept back:
certbot python-acme python-certbot python-certbot-apache python-cryptography python-openssl
สิ่งนี้หมายความว่า? ฉันควรลงมือทำอะไร? ถ้าเป็นเช่นนั้นอะไร
คำตอบ:
ฉันมีปัญหาเดียวกันหลายครั้ง อย่าทำ
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 ด้านล่าง มันยังเป็นทางออกที่ดี
ขอบคุณ
สิ่งนี้หมายความว่า?
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>
จากคำตอบ Unix SE นี้ :
ประการแรกดังกล่าวข้างต้นโปรดอย่าอัพเกรดระบบการผลิตใด ๆ ! ในขณะที่การอัพเกรด dist จะ "แก้ปัญหา" การสำรองแพคเกจกลับไม่ใช่ทางออกของปัญหานี้และอาจทำให้คุณโศกเศร้ามากกว่าดีถ้าคุณเรียกใช้โดยไม่ทราบถึงผลกระทบต่อระบบของคุณ
หากอัพเกรดแพคเกจที่ต้องมีการติดตั้งแพคเกจเพิ่มเติมมันจะ "กลับมาเก็บไว้" sudo apt-get upgrade
เมื่อทำงาน
ดังกล่าวข้างต้นคุณสามารถติดตั้งแพคเกจ "เก็บกลับ" เหล่านี้ด้วยตนเองโดยเรียกใช้อย่างชัดเจนsudo apt-get install [paste kept back packages here]
แต่จะทำเครื่องหมายแพ็คเกจเหล่านี้ว่า "ติดตั้งด้วยตนเอง" ซึ่งมักจะไม่ใช่สิ่งที่เราต้องการ
โดยอัตโนมัติติดตั้งแพคเกจเพิ่มเติมใด ๆ ที่จำเป็นในการอัพเกรด "เก็บไว้กลับ" แพคเกจในขณะที่ไม่ทำเครื่องหมาย "เก็บไว้กลับ" sudo apt-get --with-new-pkgs upgrade
แพคเกจติดตั้งด้วยตนเองทำงานเพียง
ฉันรวมคำตอบนี้ไว้ในบล็อกของฉัน หากคุณต้องการที่จะเห็นว่าคุณสามารถไปที่นั่นได้จากลิงค์นี้
ข้อผิดพลาดดังกล่าวเป็นเรื่องธรรมดาในเทอร์มินัล 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
ตัวเลือกที่คุณสามารถยุติการทำงานก่อนที่จะยอมรับ (คุณสามารถเลือกตัวเลือกได้เสมอ)
เมื่อเร็ว ๆ นี้การปรับปรุงความปลอดภัย Debian แนะนำการอ้างอิงใหม่บางอย่าง ในกรณีนี้linux-image
แพคเกจเริ่มต้องlinux-firmware
หมู่อื่น ๆ unattended-upgrade
ดังนั้นพวกเขาจึงถูกจัดขึ้นกลับมาและไม่ได้ติดตั้งโดย หลังจากการทดสอบและการยืนยันบางอย่างฉันสามารถเลือกติดตั้งเฉพาะแพ็คเกจเหล่านั้นได้ในขณะที่ไม่ได้สัมผัสการอัปเดตที่รอดำเนินการอื่น ๆ :
apt-get -yy install $(apt-get -s upgrade | sed '1,/kept back/d;/will be upgraded/,$d')
บทความนี้เป็นข้อสรุปว่าทำไมสิ่งนี้จึงเกิดขึ้น:
หากการพึ่งพามีการเปลี่ยนแปลงในแพ็คเกจใดแพ็คเกจหนึ่งที่คุณติดตั้งดังนั้นจึงต้องติดตั้งแพ็คเกจใหม่เพื่อดำเนินการอัปเกรด
วิธีแก้ปัญหานี้คือการติดตั้งพวกเขาอย่างชัดเจนด้วย
sudo apt install [packages]
คุณอาจต้องการทำเครื่องหมายแพ็คเกจเหล่านี้ว่าติดตั้งโดยอัตโนมัติเว้นแต่คุณจะใส่ใจกับมันด้วยตัวคุณเองและไม่เพียงเพื่อสนองต่อการพึ่งพา
sudo apt-mark auto [packages]
เพื่อป้องกันไม่ให้สิ่งนี้เกิดขึ้นในตอนแรกฉันแนะนำให้ใช้
sudo apt --with-new-pkgs upgrade
เพื่ออัพเกรดแพ็คเกจในอนาคตซึ่งจะช่วยให้การติดตั้งแพคเกจใหม่เพื่อตอบสนองการเปลี่ยนแปลงในการพึ่งพา
--with-new-pkgs
! และฉันขอย้ำอีกครั้งว่า " อย่าอัปเกรดระบบการผลิตใด ๆ ! ในขณะที่การอัพเกรด dist จะ" แก้ปัญหา "เก็บแพคเกจกลับไม่ใช่ทางออกของปัญหานี้และอาจทำให้คุณเศร้าโศกมากกว่าคุณ เรียกใช้โดยไม่ทราบถึงผลกระทบต่อระบบของคุณ "