APT wedged โดยเคอร์เนลเวอร์ชันไม่ตรงกัน


18

Apt ดูเหมือนจะไม่สามารถทำสิ่งใดที่มีประโยชน์สำหรับฉันได้หลายครั้งโดยให้ข้อความในแบบฟอร์มนี้:

dpkg: dependency problems prevent configuration of linux-server:
 linux-server depends on linux-image-server (= 3.2.0.37.44); however:
  Version of linux-image-server on system is 3.2.0.37.45.
 linux-server depends on linux-headers-server (= 3.2.0.37.44); however:
  Version of linux-headers-server on system is 3.2.0.37.45.
dpkg: error processing linux-server (--configure):
 dependency problems - leaving unconfigured

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

อย่างชัดเจน:

sudo apt-get clean
sudo apt-get autoclean
sudo apt-get update

ทั้งหมดไม่มีผล ในขณะที่

sudo apt-get -f install
sudo dpkg --configure -a
sudo apt-get -u dist-upgrade
sudo apt-get -o Debug::pkgProblemResolver=yes dist-upgrade

ทั้งหมดให้รูปแบบของข้อความแสดงข้อผิดพลาดด้านบน

คำตอบ:


20

คุณวิ่งsudo apt-get updateและปัญหายังคงเกิดขึ้น ดังนั้นคุณอาจมีเวอร์ชั่นใหม่กว่าlinux-image-serverและlinux-headers-serverมีlinux-serverแพ็คเกจมากกว่าจากแหล่งซอฟต์แวร์ที่คุณกำหนดค่าไว้

ซึ่งอาจเกิดขึ้นได้มากในช่วงเวลาสั้นแม้ว่าคุณกำลังใช้เซิร์ฟเวอร์กลาง (หรือเป็นเวลานานถ้ามีปัญหาการปรับปรุงมัน) ความเข้าใจของฉันคือว่ามันสามารถเกิดขึ้นได้เป็นเวลานานถ้าคุณใช้กระจก นั่นไม่ได้หมายความว่าคุณไม่ควรใช้มิเรอร์ - เซิร์ฟเวอร์กลาง ( http://archive.ubuntu.com) มักจะช้ามากและมิเรอร์ระดับประเทศภูมิภาคหรืออื่น ๆ นั้นเร็วกว่ามาก

การค้นหาแพ็คเกจพบว่าทั้งคู่มีเวอร์ชัน 3.2.0.37.45 linux-image-serverและlinux-serverมีอยู่ใน Ubuntu 12.04 ดังนั้นอาจเกี่ยวข้องกับกระจกของคุณ

นี่คือทางเลือก:

ไม่สนใจมัน

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

ไม่ใช่ปัญหาที่จะไม่ได้รับlinux-serverแพ็คเกจล่าสุดเนื่องจากเป็นmetapackageที่ไม่มีซอฟต์แวร์จริง มีอยู่เพียงเพื่อให้สามารถแสดงรายการแพ็กเกจสามรายการเป็นการอ้างอิงเพื่อให้แน่ใจว่ายังคงติดตั้ง:

คุณมีอยู่แล้วรุ่นล่าสุดของและlinux-headers-server linux-image-serverฉันเดาว่านี่เป็นระบบ 64- บิตซึ่งเป็นสาเหตุที่ไม่มีข้อความlinux-generic-paeแสดงให้เห็น ดูเหมือนว่าทุกอย่างเรียบร้อยดี

อย่างไรก็ตาม:

  • หากปัญหา ป้องกันไม่ให้อัปเดตและติดตั้งแพ็กเกจอื่นไม่ให้ทำงาน (แทนที่จะแสดงเฉพาะข้อความเหล่านั้นทุกครั้งที่คุณทำ แต่ไม่รบกวนการทำงาน) คุณควรใช้วิธีแก้ไขปัญหาอื่น
  • คุณอาจต้องการทำเช่นนั้นหากคุณไม่ชอบเห็นข้อความเหล่านี้ตลอดเวลาและต้องการกำจัดข้อความเหล่านั้น
  • มันแปลก ๆ หน่อย ๆ http://security.ubuntu.comคุณไม่ได้รับแพคเกจนี้แม้ว่าคุณจะใช้กระจกที่ล่าช้าเล็กน้อยหลังเซิร์ฟเวอร์ดาวน์โหลดหลักเพราะแพคเกจนี้ยังมีให้ เซิร์ฟเวอร์นั้นควรเปิดใช้งาน/etc/apt/sources.listเสมอ ดังนั้นฉันแนะนำให้ตรวจสอบเพื่อให้แน่ใจว่าเปิดใช้งานแล้ว คุณอาจต้องการสำรองข้อมูลsources.listก่อนที่จะแก้ไข ( sudo cp /etc/apt/sources.list /etc/apt/sources.list.old) ปัญหาอาจเป็นผลมาจากเว็บพร็อกซีแคช (ถ้าคุณใช้) กับข้อมูลเก่า (โซลูชันด้านล่างจะแก้ไขปัญหานี้ด้วย)

เปลี่ยนเป็นเซิร์ฟเวอร์ดาวน์โหลดอื่น

ฉันเดาว่าคุณใช้ระบบเซิร์ฟเวอร์ Ubuntu และอาจไม่มี GUI ติดตั้งอยู่ ดังนั้นดู:

หลังจากเปลี่ยนกระจกของคุณแล้วให้เรียกใช้:

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

หากคุณต้องการคุณสามารถเปลี่ยนเซิร์ฟเวอร์ของคุณกลับมาหลังจากที่linux-serverมีการปรับปรุง

ดาวน์โหลดและติดตั้ง.debไฟล์แพ็กเกจด้วยตนเอง

คุณสามารถดาวน์โหลดและติดตั้ง.debไฟล์สำหรับlinux-servermetapackage เวอร์ชันล่าสุดใน Ubuntu 12.04 ได้ด้วยตนเอง

cd ไปยังทุกที่ที่คุณต้องการดาวน์โหลดแพ็คเกจ

หากนี่เป็นระบบ 64- บิตให้รัน:

wget https://launchpad.net/ubuntu/+archive/primary/+files/linux-server_3.2.0.23.25_amd64.deb

หากนี่เป็นระบบ 32 บิตให้เรียกใช้สิ่งนี้แทน:

wget https://launchpad.net/ubuntu/+archive/primary/+files/linux-server_3.2.0.23.25_i386.deb

(ฉันได้รับลิงก์ทั้งสองนี้ในหน้า Launchpad สำหรับlinux-metaแพ็กเกจซอร์สใน Ubuntu )

ตอนนี้ (สำหรับทั้ง 64- บิตและ 32- บิต), เรียกใช้คำสั่งนี้เพื่อติดตั้งแพคเกจ:

sudo dpkg -i linux-server_3.2.0.23.25_*.deb

(หรือเพียงแค่เริ่มพิมพ์ชื่อแพ็คเกจและใช้Tabเพื่อทำให้สำเร็จ)

ลบแพ็คเกจ

เนื่องจากเป็น metapackage ที่ให้บริการซอฟต์แวร์ที่คุณมีอยู่แล้วคุณสามารถลบแพ็คเกจได้ จากนั้นคุณจะไม่ได้รับข้อผิดพลาดอีกต่อไป คุณสามารถติดตั้งอีกครั้งในภายหลังหากคุณต้องการ (คุณสามารถเรียกใช้เป็นระยะapt-get update && apt-cache policy linux-serverเพื่อดูว่ามีเวอร์ชั่นใหม่หรือไม่)

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

อ้างอิงจะไม่ถูกลบออกทันที ดังนั้นไม่สำคัญว่าคุณจะทำขั้นตอนใดก่อน

1. linux-serverถอนการติดตั้ง

หากต้องการถอนการติดตั้งlinux-serverเพียงรัน:

sudo apt-get remove linux-server

2. ทำเครื่องหมายการพึ่งพาว่าติดตั้งด้วยตนเอง

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

หากต้องการทำเช่นนั้นให้เรียกใช้คำสั่งนี้หากเป็นระบบ 64 บิต:

sudo apt-mark manual linux-image-server linux-headers-server

หากเป็นระบบ 32 บิตให้เรียกใช้สิ่งนี้แทน:

sudo apt-mark manual linux-image-server linux-headers-server linux-generic-pae

(คุณควรมีapt-markแต่ถ้าคุณไม่มีและคุณไม่สามารถติดตั้งซอฟต์แวร์ได้คุณสามารถใช้apt-get installแทน - การapt-mark manualระบุแพ็คเกจด้วยตนเองสำหรับการติดตั้งทำให้ทำเครื่องหมายว่าติดตั้งด้วยตนเองแม้ว่าจะติดตั้งแล้ว)

ที่มา: ทำเครื่องหมายแพ็คเกจ deb ตามที่ใช้ดังนั้นจึงไม่แนะนำให้ใช้ autoremoval
(โดยเฉพาะคำตอบของ Lekensteyn )


3
ขอบคุณสำหรับการตอบสนองอย่างละเอียด มิเรอร์การเปลี่ยนไม่ได้เปลี่ยนสถานการณ์เลย แต่การติดตั้ง linux-server ( linux-server_3.2.0.37.45) เวอร์ชั่นใหม่ด้วยตนเองไม่สามารถแก้ไขปัญหาได้
Leopd

2
ในกรณีของฉันฉันไม่สามารถใช้ apt-get เพื่ออะไร ฉันได้รับข้อผิดพลาดในการพึ่งพาของ unmet สำหรับ linux-server เสมอ ฉันได้ลองจากสิ่งที่ได้รับแรงบันดาลใจจากคำแนะนำของคุณซึ่งได้ผลและง่ายกว่ามาก:sudo apt-get remove linux-server && sudo apt-get install linux-server
Andrew Ensley

4

หากคุณมีการติดตั้งแบบเต็ม / บูตและการอัปเกรดความปลอดภัยอัตโนมัติคุณอาจอยู่ในเรือลำเดียวกันกับฉัน

ฉันไม่สามารถทำอะไรได้เลยเพื่อให้คำแนะนำแบบเต็ม / แบบดั้งเดิมไม่ทำงาน ฉันลบข้อมูลเคอร์เนลเก่าด้วยตนเอง อย่าลบเคอร์เนลที่กำลังทำงานอยู่ให้ตรวจสอบด้วย 'uname -a' ฉันออกด้วย 'sudo RM / boot / -3.2.0- {23,24,25,26} -

จากนั้นฉันต้องเรียกใช้ 'sudo apt-get remove linux-server' และ 'sudo apt-get install linux-server' เพื่อแก้ไขระเบียบจากปัญหาเคอร์เนลที่ติดตั้ง 1/2 หลังจากนั้นฉันก็สามารถ 'อัปเกรด audo-apt-get upgrade' และทำให้สิ่งต่าง ๆ เคลื่อนที่อีกครั้ง

สำหรับการวัดที่ดีฉันโยนใน 'sudo update-grub' และ 'sudo apt-get autoremove' เพื่อให้แน่ใจว่าเมนูการบู๊ตนั้นถูกต้องและแพคเกจอื่น ๆ ก็สะอาดขึ้น


ฉันเขียนเพิ่มเติมเล็กน้อยเกี่ยวกับกระบวนการนี้ที่นี่: askubuntu.com/a/430944/47461ในฐานะผู้รับเหมาฉันพบปัญหานี้บ่อยครั้ง
flickerfly

0

ในสถานการณ์กับ Ubuntu 12.04 จำเป็นต้องติดตั้ง linux-headers-server และ linux-server ด้วยตนเอง (ตามที่แนะนำข้างต้น - ฉันได้แสดงความคิดเห็นแล้ว แต่ยังไม่มีสิทธิ์นั้น) จากนั้น apt-get remove linux-headers-virtual ซึ่งดูเหมือนจะไม่มีอยู่ในแพ็คเกจ 64 บิตสำหรับ 12.04 อีกต่อไป

sudo wget https://launchpad.net/ubuntu/+archive/primary/+files/linux-headers-server_3.2.0.64.76_amd64.deb

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.