apt-get: Không còn chỗ trống trên thiết bị (12.04)


42

Tôi đã đọc tất cả các chủ đề tôi có thể tìm thấy - ngay cả những người nói rằng câu hỏi đã được trả lời ở nơi khác nhưng không ai trong số họ giải quyết vấn đề cụ thể mà tôi đang gặp phải. Trình quản lý cập nhật đã chạy và tạo ra các lỗi liên quan đến sự phụ thuộc chưa được đáp ứng và được đề xuất sử dụng apt-get install -f không thành công với thông báo này:

Unpacking linux-headers-3.5.0-36 (from .../linux-headers-3.5.0-36_3.5.0-36.57~precise1_all.deb) ...
dpkg: error processing /var/cache/apt/archives/linux-headers-3.5.0-36_3.5.0-36.57~precise1_all.deb (--unpack):
 unable to create `/usr/src/linux-headers-3.5.0-36/arch/arm/mach-iop32x/include/mach/glantank.h.dpkg-new' (while processing `./usr/src/linux-headers-3.5.0-36/arch/arm/mach-iop32x/include/mach/glantank.h'): No space left on device

Tôi nghi ngờ rằng 5 từ cuối cùng Không còn chỗ trống trên thiết bị là đáng kể nhưng cả df và du đều hiển thị đủ không gian. Vì vậy, tôi tự hỏi, những gì thiết bị cần nhiều không gian?

Ouput từ df -h

Filesystem 
Size Used Avail Use% 
Mounted on /dev/sda1 5.5G 4.4G 786M 86% 
/ udev 996M 4.0K 996M 1% 
/dev tmpfs 402M 880K 401M 1% 
/run none 5.0M 0 5.0M 0% /run/lock none 1004M 156K 1004M 1% 
/run/shm /dev/sdb1 30G 1.4G 27G 5% 
/home /dev/sdc1 299G 31G 268G 11% /media/HD-PCTU2 

Bạn có không gian trên phân vùng gốc?
don.joey

1
Vui lòng dán (i) đầu ra của df -hvà (ii) đầu ra của mount. dpkg sẽ dọn sạch các tệp sau khi nó hoạt động xong, vì vậy có vẻ như bạn có đủ dung lượng khi thực tế bạn không làm vậy. Cân nhắc chạy apt-get cleantrước khi bạn bắt đầu dpkg.
tháng 1

1
để giám sát thực hiện watch -n 1 df -htrong một thiết bị đầu cuối trong khi thực hiện apt-get install(nó sẽ làm chậm một chút bạn nhưng bạn sẽ biết hệ thống tệp nào quá nhỏ)
Emmanuel

Sự cố cũng xảy ra với Ubuntu 14.04 và phiên bản kernel 3.13.0.108 trong một trong ba máy tính. Tôi đã bắt đầu với Askubfox.com/questions/223143/, nhưng các câu trả lời hiển thị ở đây nằm trong cùng một dòng.
XavierStuvw

Câu trả lời:


48

Tôi chỉ gặp phải vấn đề tương tự. Tôi đã bắt gặp một đề cập đến các nút và chạy trong thiết bị đầu cuối của mình để kiểm tra việc sử dụng inode:

  df -i 

Điều này cho thấy sử dụng inode ở mức 99%. Vì vậy, trong khi đĩa của tôi còn nhiều dung lượng, tôi không thể tạo thêm tệp vì giới hạn số lượng nút. Một số dọn dẹp đĩa là giải pháp cho vấn đề của tôi.


6
Tôi đã có cùng một vấn đề gây ra bởi các bản cập nhật kernel không tự động loại bỏ các nhân cũ. Các tiêu đề Linux của mỗi bản cập nhật kernel chiếm số lượng đáng kể các nút! --- My "an toàn" Giải pháp là để di chuyển hai kernel header thư mục đến một hệ thống tập tin khác nhau: cd /usr/src ; cp -a linux-headers-3.2.0-3{2,3}* /home/tmp-hdr ; rm -r linux-headers-3.2.0-3{2,3}*, apt-get-install -f, loại bỏ một số tiêu đề khác đúng cách: apt-get purge linux-headers-..., di chuyển các tiêu đề từ phía sau tmp: cd /usr/src ; cp -a /home/tmp-hdr/* .. Loại bỏ nhiều hạt nhân cũ bằng cách sử dụng apt-get purge.
pabouk

1
Vui lòng xem xét việc tham gia vào các báo cáo lỗi có hoạt động thấp: Lỗi # 1089195 tiêu đề linux sẽ ăn inodes của bạn trên LTS. , Lỗi # 690911 Cài đặt mà không định dạng không thể xóa các hạt nhân cũ
pabouk

@pabouk Tôi tự hỏi, nếu bạn có thể đã sử dụng dpkg --purge linux-headers-3.2.0-3{2,3}*; apt-get -f installđể không cần sao chép?
jarno

@jarno Đã lâu rồi nhưng tôi nghĩ rằng tất cả các lệnh sử dụng cơ sở dữ liệu dpkg hoặc apt đều thất bại. Tôi nghĩ rằng đó là do sự phụ thuộc bị hỏng và sự không nhất quán khác gây ra bởi không đủ số lượng nút trong quá trình nâng cấp tự động.
pabouk

Việc dọn dẹp đĩa được yêu cầu có thể được thực hiện sudo linux-purge --fixsau khi tập lệnh được xuất bản.
jarno

37

Tôi nghĩ rằng phân vùng khởi động của bạn chứa đầy hình ảnh kernel cũ, không còn chỗ cho cái mới apt-getđang cố cài đặt. Bạn có thể gõ

dpkg -l linux-headers-\* linux-image-\* | grep ^ii

vào một cửa sổ đầu cuối. Khi tôi làm điều này, tôi nhận được

ii  linux-headers-3.8.0-18                    3.8.0-18.28                            all          Header files related to Linux kernel version 3.8.0
ii  linux-headers-3.8.0-18-generic            3.8.0-18.28                            amd64        Linux kernel headers for version 3.8.0 on 64 bit x86 SMP
ii  linux-headers-3.8.0-19                    3.8.0-19.30                            all          Header files related to Linux kernel version 3.8.0
ii  linux-headers-3.8.0-19-generic            3.8.0-19.30                            amd64        Linux kernel headers for version 3.8.0 on 64 bit x86 SMP
ii  linux-headers-3.8.0-21                    3.8.0-21.32                            all          Header files related to Linux kernel version 3.8.0
ii  linux-headers-3.8.0-21-generic            3.8.0-21.32                            amd64        Linux kernel headers for version 3.8.0 on 64 bit x86 SMP
ii  linux-headers-3.8.0-22                    3.8.0-22.33                            all          Header files related to Linux kernel version 3.8.0
ii  linux-headers-3.8.0-22-generic            3.8.0-22.33                            amd64        Linux kernel headers for version 3.8.0 on 64 bit x86 SMP
ii  linux-headers-3.8.0-23                    3.8.0-23.34                            all          Header files related to Linux kernel version 3.8.0
ii  linux-headers-3.8.0-23-generic            3.8.0-23.34                            amd64        Linux kernel headers for version 3.8.0 on 64 bit x86 SMP
ii  linux-headers-3.8.0-25                    3.8.0-25.37                            all          Header files related to Linux kernel version 3.8.0
ii  linux-headers-3.8.0-25-generic            3.8.0-25.37                            amd64        Linux kernel headers for version 3.8.0 on 64 bit x86 SMP
ii  linux-headers-generic                     3.8.0.25.43                            amd64        Generic Linux kernel headers

Vì tôi có khá nhiều, tôi có thể xóa một số cũ nhất bằng

sudo apt-get remove linux-headers-3.8.0-18

Nếu apt-getthất bại vì nó bỏ lỡ một số phụ thuộc gói (mà bạn không thể cài đặt do thiếu các nút miễn phí), bạn có thể sử dụng dpkgtrực tiếp thay thế:

sudo dpkg --remove linux-headers-3.8.0-18

Làm điều đó một vài lần cho người lớn tuổi nhất của bạn linux-headers-*và bạn nên có phòng.


4
Điều này đưa ra ánh sáng vấn đề khác. Mỗi lần tôi chạy dpkg, nó nói với tôi rằng nó có một phụ thuộc chưa được đáp ứng Các gói sau có các phụ thuộc chưa được đáp ứng: linux-headers-3.5.0-36-generic: Phụ thuộc: linux-headers-3.5.0-36 nhưng không phải sẽ được cài đặt và đó là thứ sẽ không được cài đặt vì không đủ dung lượng
Don A

Có lẽ sao lưu các tập tin người dùng của bạn theo thứ tự, trước khi bạn gây rối với phân vùng khởi động của bạn? Tôi chưa bao giờ gặp khó khăn khi làm điều này, nhưng nếu tôi làm, tôi có mọi thứ tôi cần để cài đặt lại. Tất nhiên, dù sao thì tôi cũng sao lưu mỗi ngày.
Marc

Tôi đã hy vọng tôi sẽ không cần phải làm phiền với phân vùng khởi động và rằng có một cách để thoát ra khỏi chu kỳ phụ thuộc vô tận. Tôi thấy bây giờ có lẽ sẽ dễ dàng hơn để sao lưu dữ liệu và bắt đầu lại. Bây giờ tôi đã biết tầm quan trọng của việc dọn dẹp những món đồ cũ tôi sẽ biến nó thành thói quen. Cảm ơn tất cả sự giúp đỡ của họ.
Don A

Không có gì . . . Sao lưu luôn là một ý tưởng hay và bạn không thực sự gặp rắc rối với phân vùng khởi động, chỉ cần gỡ cài đặt một số gói với apt-get. Nó nên là một miếng bánh. Tôi chỉ đề nghị sao lưu dữ liệu của bạn vì tôi luôn đề nghị sao lưu dữ liệu nếu bạn gặp sự cố (hoặc ngay cả khi bạn không!) Tôi thực sự đã chạy các lệnh đó trên hệ thống của riêng mình để kiểm tra chúng. Tôi mất ba phút để loại bỏ linux-headers-3.8.0-18.
Marc

1
Nếu nó thất bại một lần nữa cho sudo dpkg --remove linux-headers-3.8.0-18, loại bỏ sudo dpkg --remove linux-headers-3.8.0-18-genericvà nó sẽ mang tiêu đề khác với nó.
Luận văn

17

Tôi đã sử dụng sudo apt-get autoremovevà nó loại bỏ một loạt các gói tiêu đề kernel cũ. Tốt để đi sau đó.


Trong trường hợp của tôi, apt-get đã từ chối thực hiện autoremove, ưu tiên thực tế là có một gói bị hỏng để sắp xếp. Gói bị hỏng nào đã được gây ra bởi độ bão hòa inode. Xem thêm chủ đề AskUbfox này
XavierStuvw

Vâng, điều này chỉ cứu tôi! Sau khi cập nhật phiên x của tôi không bao giờ được nhập, chỉ cần yêu cầu đăng nhập lại và tôi không nhận được tin nhắn còn trống. Tôi nghĩ rằng tôi phải định dạng hd của mình, nhưng thủ thuật của bạn đã cứu tôi :)
user5193682

1
Tôi không thể chạy cái này vì tôi có quá nhiều tập tin ...
Brian Leishman

2

Theo như tôi biết thì giới hạn của các nút trong hệ thống tệp ext * của Linux là khoảng 4 tỷ, nhưng không ít hơn, đó là số lượng tệp rất lớn. Vì vậy, vấn đề của bạn là một cái gì đó đang tạo ra rất nhiều tập tin. Tôi có thể đề nghị bạn kiểm tra đầu tiên này: http://blog.scoutapp.com/articles/2014/10/08/understanding-disk-inodes Vì vậy, bạn sẽ tìm thấy những gì được làm đầy các inodes của FS của bạn. Tôi cũng có thể đề xuất để dọn dẹp bộ đệm apt:

sudo apt-get clean

sudo apt-get autoclean
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.