ข้อผิดพลาดเต็มรูปแบบของดิสก์เท็จ: apt-get ไม่สามารถติดตั้งหรือลบได้


24

ฉันพบข้อผิดพลาดต่อไปนี้ขณะอัพเกรดเซิร์ฟเวอร์ Ubuntu 12.04 ของฉัน ตอนนี้apt-getไม่สามารถติดตั้งหรือลบแพ็คเกจใด ๆ

กำลังเปิด linux-headers-3.13.0-62 (จาก ... / linux-headers-3.13.0-62_3.13.0-62.102 ~ precision1_all.deb) ...
dpkg: การประมวลผลข้อผิดพลาด /var/cache/apt/archives/linux-headers-3.13.0-62_3.13.0-62.102~precise1_all.deb (--unpack):
 ไม่สามารถสร้าง `/usr/src/linux-headers-3.13.0-62/arch/arm/include/asm/ptrace.h.dpkg-new ' 
(ขณะประมวลผล `./usr/src/linux-headers-3.13.0-62/arch/arm/include/asm/ptrace.h '): ไม่มีพื้นที่เหลือบนอุปกรณ์ 
ไม่มีรายงาน apport ที่เขียนเนื่องจากข้อความแสดงข้อผิดพลาดระบุดิสก์ ข้อผิดพลาดทั้งหมด
 dpkg-deb: ข้อผิดพลาด: การวาง subprocess ถูกฆ่าโดยสัญญาณ (ไปป์ที่ขาด)
พบข้อผิดพลาดขณะประมวลผล:
 /var/cache/apt/archives/linux-headers-3.13.0-62_3.13.0-62.102~precise1_all.deb
E: กระบวนการย่อย / usr / bin / dpkg ส่งคืนรหัสข้อผิดพลาด (1)

แม้ว่าฉันจะไม่ได้ออกจากพื้นที่ดิสก์จริงๆ

# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1       6.8G  4.7G  1.8G  69% /  

อย่างไรก็ตาม inodes ของฉันเต็ม

# df -i
Filesystem     Inodes   IUsed  IFree IUse% Mounted on
/dev/sda1      458752  455214   3538  100% /

ฉันมีเมล็ดเก่ามากกว่าสิบเมล็ด แต่ฉันไม่สามารถลบเมล็ดออกได้เนื่องจากapt-getตัวฉันเองเป็นง่อย ดังนั้นฉันไม่สามารถติดตามโพสต์นี้ซึ่งรายงานปัญหาที่คล้ายกัน

ดูเหมือนว่าตัวเลือกเดียวเท่านั้นที่จะลบเมล็ดที่แก่กว่านั้นด้วยตนเอง มันจะทำให้เกิดปัญหาใด ๆ ?

มีวิธีที่ดีกว่านี้อีกไหม? ฉันสามารถใช้พื้นที่สงวนสำหรับรูทในขณะนั้นและลบเมล็ดเก่าได้หรือไม่


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

มันได้ผล! ฉันทำแบบเดียวกันที่นี่ (ubutu 14.04.1) เพื่ออัปเดตเป็นเคอร์เนล 4.4.0-51-generic ฉันแค่ไม่แน่ใจว่ามันจะทำให้เกิดปัญหาใด ๆ ในอนาคต ขอบคุณ
Moreno

คำตอบ:


36

ฉันรู้ว่าโพสต์นี้ค่อนข้างเก่า แต่ฉันพบคำตอบสำหรับทุกคนที่อาจสะดุดเมื่อโพสต์นี้: https://help.ubuntu.com/community/RemoveOldKernels

ในกรณีที่ลิงค์เสียนี่คือตัวอย่างที่เกี่ยวข้อง:

การกำจัดเมล็ดเก่าอย่างปลอดภัย

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

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


$ sudo rm -rv ${TMPDIR:-/var/tmp}/mkinitramfs-*  
                                  ## In Ubuntu 16.04 and earlier there may be leftover temporary
                                  ## files to delete.
                                  ## See: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=814345

$ uname -r                        ## This command identifies the currently-running kernel
4.2.0-21-generic                  ## This is the current kernel.
                                  ## DO NOT REMOVE it!

$ dpkg -l | tail -n +6 | grep -E 'linux-image-[0-9]+' | grep -Fv $(uname -r)
                                  ## This command lists all the kernels excluding the booted
                                  ## kernel in the package database, and their status.
rc  linux-image-4.2.0-14-generic  ## The oldest kernel in the database
                                  ## Status 'rc' means it's already been removed
ii  linux-image-4.2.0-15-generic  ## The oldest installed kernel. Eligible for removal.
                                  ## Status 'ii' means Installed.
ii  linux-image-4.2.0-16-generic  ## Another old installed kernel. Eligible for removal
ii  linux-image-4.2.0-18-generic  ## Another old installed kernel. Eligible for removal
ii  linux-image-4.2.0-19-generic  ## The previous good kernel. Keep
iU  linux-image-4.2.0-22-generic  ## DO NOT REMOVE. Status 'iU' means it's not installed,
                                  ## but queued for install in apt.
                                  ## This is the package we want apt to install.

                                  ## Purge the oldest kernel package using dpkg instead of apt.
                                  ## First you need to remove the image initrd.img file manually
                                  ## due to Bug #1678187.
$ sudo update-initramfs -d -k 4.2.0-15-generic
$ sudo dpkg --purge linux-image-4.2.0-15-generic linux-image-extra-4.2.0-15-generic
                                  ## If the previous command fails, some installed package
                                  ## depends on the kernel. The output of dpkg tells the name
                                  ## of the package. Purge it first.

                                  ## Also purge the respective header package.
$ sudo dpkg --purge linux-headers-4.2.0-15-generic
                                  ## Try also purging the common header package.
$ sudo dpkg --purge linux-headers-4.2.0-15
                                  ## Do not worry, if the previous command fails.

$ sudo apt-get -f install         ## Try to fix the broken dependency.

ฉันติดตามสิ่งนี้ด้วย:

sudo apt-get autoremove --purge

9

ตอนนี้ฉันพบทางออกจากสถานการณ์และกำจัดเมล็ดที่แก่กว่าออก/usr/srcไปเพื่อกำจัดสถานการณ์ โชคดีทุกอย่างเป็นไปด้วยดีและเริ่มทำงานได้อีกครั้ง

ขอแนะนำให้ทำการสำรองก่อนที่จะนำเมล็ดเก่าออกจากเครื่องผลิต


ทางออกที่ดีกว่ายังคงยินดีต้อนรับ ฉันโพสต์ความคิดเห็นนี้เป็นคำตอบเนื่องจากอาจช่วยใครซักคน
souravc

1
หลังจากเอาเมล็ดพืชเก่าออกแล้ววิ่งapt-get autoremove และติดตั้งผู้ติดตามบางคนได้apt-get -f installแก้ไขปัญหาของฉัน
Thamaraiselvam

ขอขอบคุณ. ฉันลบ linux- * ด้านล่างทั้งหมด/bootแต่ไม่ได้ใช้dkpgจึงยังมี*-headerไฟล์อยู่ในนั้น/usr/src
Dylan Pierce
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.