apt-get: Tidak ada ruang tersisa di perangkat (12,04)

42

Saya telah membaca setiap utas yang dapat saya temukan - bahkan yang mengatakan bahwa pertanyaannya telah dijawab di tempat lain tetapi tidak ada satupun yang membahas masalah spesifik yang saya alami. Update Manager dijalankan dan menghasilkan kesalahan yang berkaitan dengan ketergantungan yang tidak terpenuhi dan disarankan menggunakan apt-get install -f yang gagal dengan pesan ini:

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

Saya menduga bahwa 5 kata terakhir Tidak ada ruang yang tersisa pada perangkat yang signifikan tetapi df dan du keduanya menunjukkan ruang yang memadai. Jadi saya bertanya-tanya, perangkat apa yang membutuhkan lebih banyak ruang?

Ouput dari 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 
Don A
sumber
Apakah Anda memiliki ruang di partisi root?
don.joey
1
Silakan tempel (i) output df -hdan (ii) output mount. dpkg akan membersihkan file setelah selesai bekerja, sehingga mungkin tampak bahwa Anda memiliki cukup ruang padahal sebenarnya Anda tidak. Pertimbangkan untuk menjalankan apt-get cleansebelum Anda mulai dpkg.
Januari
1
untuk memantau lakukan watch -n 1 df -hdi terminal saat melakukan apt-get install(itu akan memperlambat sedikit Anda i / o tetapi Anda akan tahu sistem file mana yang terlalu kecil)
Emmanuel
Masalah yang terjadi juga dengan Ubuntu 14.04 dan kernel versi 3.13.0.108 dalam satu komputer dari tiga. Saya mulai dengan askubuntu.com/questions/223143/… tetapi jawaban yang ditampilkan di sini berada di baris yang sama.
XavierStuvw

Jawaban:

48

Saya baru saja mengalami masalah yang sama. Saya di tempat lain menemukan penyebutan inode, dan berlari di terminal saya untuk memeriksa penggunaan inode:

  df -i 

Ini menunjukkan penggunaan inode pada 99%. Jadi, sementara disk saya memiliki banyak ruang tersisa, saya tidak dapat membuat lebih banyak file karena keterbatasan jumlah inode. Beberapa pembersihan disk adalah solusi untuk masalah saya.

Kevin
sumber
6
Saya memiliki masalah yang sama yang disebabkan oleh pembaruan kernel yang tidak menghapus kernel lama secara otomatis. Header Linux dari setiap pembaruan kernel menempati sejumlah besar inode! --- saya "aman" solusi adalah untuk memindahkan dua header kernel direktori ke filesystem yang berbeda: 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, menghapus beberapa header lain dengan cara yang benar: apt-get purge linux-headers-..., memindahkan header dari belakang tmp: cd /usr/src ; cp -a /home/tmp-hdr/* .. Hapus lebih banyak kernel lama menggunakan apt-get purge.
pabouk
1
Silakan pertimbangkan berpartisipasi dalam laporan bug dengan aktivitas rendah: Bug # 1089195 linux-headers akan memakan inode Anda di LTS. , Bug # 690911 Instalasi tanpa pemformatan gagal menghapus kernel lama
pabouk
@ poabuk Saya bertanya-tanya, apakah Anda bisa menggunakan dpkg --purge linux-headers-3.2.0-3{2,3}*; apt-get -f installsehingga tidak perlu menyalin?
jarno
@ Jarno Sudah lama tentang tapi saya pikir bahwa semua perintah menggunakan database dpkg atau apt gagal. Saya pikir itu karena dependensi yang rusak dan inkonsistensi lainnya yang disebabkan oleh jumlah inode yang tidak mencukupi selama peningkatan otomatis.
pabouk
Pembersihan disk yang diperlukan dapat dilakukan sudo linux-purge --fixsetelah skrip diterbitkan.
jarno
37

Saya pikir partisi boot Anda penuh dengan gambar kernel lama, tidak menyisakan ruang untuk yang baru apt-getmencoba untuk menginstal. Anda bisa mengetik

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

ke dalam jendela terminal. Ketika saya melakukan ini, saya mengerti

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

Karena saya memiliki beberapa, saya dapat menghapus beberapa yang tertua dengan

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

Jika apt-getgagal karena melewatkan beberapa dependensi paket (yang tidak dapat Anda instal karena kurangnya inode gratis), Anda dapat dpkglangsung beralih ke:

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

Lakukan itu beberapa kali untuk yang tertua linux-headers-*dan Anda harus memiliki ruang.

Marc
sumber
4
Ini mengangkat masalah lain. Setiap kali saya mencoba menjalankan dpkg ia memberi tahu saya bahwa ia memiliki dependensi yang belum terpenuhi. Paket-paket berikut memiliki dependensi yang belum terpenuhi: linux-headers-3.5.0-36-generic: Tergantung: linux-headers-3.5.0-36 tetapi tidak akan diinstal dan itu adalah hal yang tidak akan menginstal karena tidak ada cukup ruang
Don A
Mungkin cadangan file pengguna Anda sudah beres, sebelum Anda mengacaukan partisi boot Anda? Saya tidak pernah mengalami kesulitan melakukan ini, tetapi jika saya lakukan, saya akan memiliki semua yang saya butuhkan untuk menginstal ulang. Tentu saja, saya melakukan backup setiap hari.
Marc
Saya berharap saya tidak perlu mengacaukan partisi boot dan ada cara untuk keluar dari siklus ketergantungan tanpa akhir. Saya melihat sekarang bahwa mungkin akan lebih mudah untuk membuat cadangan data dan memulai kembali. Sekarang saya tahu pentingnya membersihkan barang-barang lama saya akan menjadikannya kebiasaan. Terima kasih untuk semua atas bantuan mereka.
Don A
Tidak semuanya . . . mencadangkan selalu merupakan ide yang bagus, dan Anda tidak terlalu banyak mengotak-atik partisi boot, hanya mencopot beberapa paket dengan apt-get. Itu harus sepotong kue. Saya hanya menyarankan mencadangkan data Anda karena saya selalu menyarankan mencadangkan data jika Anda mengalami masalah (atau bahkan jika tidak!) Saya benar-benar menjalankan perintah-perintah itu pada sistem saya sendiri untuk mengujinya. Butuh saya tiga menit untuk menghapus linux-headers-3.8.0-18.
Marc
1
Jika gagal lagi untuk sudo dpkg --remove linux-headers-3.8.0-18, hapus sudo dpkg --remove linux-headers-3.8.0-18-genericdan akan mengambil header yang lain dengannya.
Theson
17

Saya menggunakan sudo apt-get autoremovedan menghapus sekelompok paket kernel-header lama. Bagus untuk pergi setelah itu.

Frank Sfalanga Jr.
sumber
Dalam kasus saya, apt-get menolak melakukan autoremove yang mengutamakan fakta bahwa ada paket yang rusak untuk diselesaikan. Paket rusak yang disebabkan oleh saturasi inode. Lihat juga utas AskUbuntu ini
XavierStuvw
Nah, ini baru menyelamatkan saya! Setelah pembaruan, sesi x saya tidak pernah masuk, hanya meminta untuk masuk lagi dan saya sering mendapat pesan tanpa spasi. Saya pikir saya harus memformat hd saya, tetapi trik Anda baru saja menyelamatkan saya :)
user5193682
1
Lol Saya tidak bisa menjalankan ini karena saya punya terlalu banyak file ...
Brian berkata Reinstate Monica
2

Sejauh yang saya tahu batas inode dalam sistem file ext * Linux adalah sekitar 4 miliar, tetapi tidak kurang, yang merupakan jumlah besar file. Jadi masalah Anda adalah ada sesuatu yang menghasilkan banyak file. Saya dapat mengusulkan Anda untuk memeriksa dulu ini: http://blog.scoutapp.com/articles/2014/10/08/understanding-disk-inodes Jadi Anda akan menemukan apa yang mengisi inode dari FS Anda. Saya juga bisa mengusulkan untuk membersihkan cache apt:

sudo apt-get clean

dan

sudo apt-get autoclean
Stefan
sumber