Lỗi sai toàn bộ đĩa: apt-get không thể cài đặt hoặc gỡ bỏ


24

Tôi đã gặp lỗi sau khi nâng cấp máy chủ Ubuntu 12.04 của mình. Bây giờ apt-getkhông thể cài đặt hoặc gỡ bỏ bất kỳ gói.

Giải nén các tiêu đề linux-3.13.0-62 (từ ... / linux-headers-3.13.0-62_3.13.0-62.102 ~ precision1_all.deb) ...
dpkg: xử lý lỗi /var/cache/apt/archives/linux-headers-3.13.0-62_3.13.0-62.102~precise1_all.deb (--unpack):
 không thể tạo `/usr/src/linux-headers-3.13.0-62/arch/arm/include/asm/ptrace.h.dpkg-new ' 
(trong khi xử lý `./usr/src/linux-headers-3.13.0-62/arch/arm/include/asm/ptrace.h '): Không còn chỗ trống trên thiết bị 
Không có báo cáo apport được viết vì thông báo lỗi cho biết đĩa lỗi đầy đủ
 dpkg-deb: error: quá trình dán đã bị hủy bởi tín hiệu (Đường ống bị hỏng)
Đã bắt gặp các lỗi trong quá trình xử lí thông tin:
 /var/cache/apt/archives/linux-headers-3.13.0-62_3.13.0-62.102~precise1_all.deb
E: Quá trình phụ / usr / bin / dpkg trả về mã lỗi (1)

Mặc dù tôi không thực sự hết dung lượng đĩa,

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

Dù sao thì inodes của tôi đã đầy,

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

Tôi có hơn mười hạt nhân cũ nhưng tôi không thể loại bỏ chúng vì apt-getbản thân tôi là khập khiễng. Vì vậy, tôi không thể theo dõi bài viết này báo cáo vấn đề tương tự.

Tùy chọn duy nhất dường như xóa một vài hạt nhân cũ hơn bằng tay. Nó sẽ gây ra vấn đề gì không?

Có cách nào tốt hơn không? Tôi có thể sử dụng không gian dành riêng cho root trong thời gian này và loại bỏ các hạt nhân cũ hơn không?


1
Thật vậy, tôi đã loại bỏ một vài hạt nhân cũ hơn /usr/srcđể thoát khỏi tình trạng này. May mắn là mọi thứ đã diễn ra tốt đẹp và aptbắt đầu làm việc trở lại. Nhưng tôi sẽ yêu cầu bạn lấy lại trước khi làm điều đó trên máy sản xuất. Tôi đã làm điều đó trên một máy ảo đã sao lưu hoàn toàn.
souravc

Nó hoạt động! Tôi đã làm tương tự ở đây (ubutu 14.04.1) để cập nhật lên kernel 4.4.0-51-generic. Tôi chỉ không chắc nó sẽ gây ra vấn đề gì trong tương lai. Cảm ơn.
Moreno

Câu trả lời:


36

Tôi biết bài đăng này hơi cũ, nhưng tôi đã tìm thấy câu trả lời ở đây cho bất kỳ ai có thể vấp phải bài đăng này: https : //help.ub Ubuntu.com/community/RemoveOldKernels

Trong trường hợp liên kết đó bị hỏng, đây là đoạn liên quan:

Loại bỏ hạt nhân cũ một cách an toàn

Đối với người dùng hệ thống LVM, hệ thống mã hóa hoặc hệ thống lưu trữ giới hạn, vấn đề thường gặp nhất là phân vùng / boot đơn giản là đầy đủ. Trình quản lý gói không thể cài đặt bản nâng cấp đang chờ xử lý do thiếu dung lượng. Ngoài ra, apt-get không thể xóa gói do phụ thuộc bị hỏng.

Vấn đề này có thể được khắc phục nhanh chóng và dễ dàng từ vỏ. Chỉ cần xác định một hoặc hai hạt nhân cũ để xóa thủ công, điều này sẽ cung cấp cho trình quản lý gói đủ không gian để cài đặt nâng cấp xếp hàng.


$ 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.

Tôi đã làm theo điều này với:

sudo apt-get autoremove --purge

9

Bây giờ tôi đã tìm ra cách thoát khỏi tình huống và loại bỏ vài hạt nhân cũ /usr/srcđể thoát khỏi tình trạng này. May mắn là mọi thứ đều ổn và apt bắt đầu hoạt động trở lại.

Rất khuyến khích lấy lại trước khi loại bỏ hạt cũ trên máy sản xuất.


Bất kỳ giải pháp tốt hơn vẫn được chào đón. Tôi đăng bình luận này như là câu trả lời vì nó có thể giúp đỡ ai đó.
souravc

1
Sau khi loại bỏ một số hạt nhân cũ và chạy apt-get autoremove và cài đặt một số phụ thuộc đã apt-get -f installkhắc phục sự cố của tôi
Thamaraiselvam

CẢM ƠN BẠN. Tôi đã xóa tất cả linux- * bên dưới /bootnhưng không sử dụng dkpgnên vẫn còn các *-headertệp trong/usr/src
Dylan Pierce
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.