Pertanyaan Tidak dapat membersihkan penuh / boot karena dependensi yang tidak terpenuhi


Saya mendapat pesan kesalahan yang menjelaskan bahwa / boot saya penuh. mencoba untuk membersihkan file gambar lama tampaknya selalu gagal karena kesalahan disk penuh atau kesalahan ketergantungan. Dapatkah seseorang menjelaskan di mana saya salah.

$ sudo apt-get autoremove
Reading package lists... Done
Building dependency tree       
Reading state information... Done
You might want to run ‘apt-get -f install’ to correct these.
The following packages have unmet dependencies.
 linux-image-extra-3.13.0-44-generic : Depends: linux-image-3.13.0-44-generic but it is not installed
 linux-image-extra-3.13.0-45-generic : Depends: linux-image-3.13.0-45-generic but it is not installed
 linux-image-generic : Depends: linux-image-3.13.0-45-generic but it is not installed
E: Unmet dependencies. Try using -f.

$ ls /boot
abi-3.13.0-32-generic         initrd.img-3.13.0-43-generic
abi-3.13.0-36-generic         lost+found
abi-3.13.0-37-generic         memtest86+.bin
abi-3.13.0-39-generic         memtest86+.elf
abi-3.13.0-40-generic         memtest86+_multiboot.bin
abi-3.13.0-43-generic         System.map-3.13.0-32-generic
config-3.13.0-32-generic      System.map-3.13.0-36-generic
config-3.13.0-36-generic      System.map-3.13.0-37-generic
config-3.13.0-37-generic      System.map-3.13.0-39-generic
config-3.13.0-39-generic      System.map-3.13.0-40-generic
config-3.13.0-40-generic      System.map-3.13.0-43-generic
config-3.13.0-43-generic      vmlinuz-3.13.0-32-generic
grub                          vmlinuz-3.13.0-36-generic
initrd.img-3.13.0-32-generic  vmlinuz-3.13.0-37-generic
initrd.img-3.13.0-36-generic  vmlinuz-3.13.0-39-generic
initrd.img-3.13.0-37-generic  vmlinuz-3.13.0-40-generic
initrd.img-3.13.0-39-generic  vmlinuz-3.13.0-43-generic
initrd.img-3.13.0-40-generic

Saya menggunakan

kernelver=$(uname -r | sed -r 's/-[a-z]+//')
dpkg -l linux-{image,headers}-"[0-9]*" | awk '/ii/{print $2}' | grep -ve $kernelver

mendapatkan

linux-headers-3.13.0-32
linux-headers-3.13.0-32-generic
linux-headers-3.13.0-36
linux-headers-3.13.0-36-generic
linux-headers-3.13.0-37
linux-headers-3.13.0-37-generic
linux-headers-3.13.0-39
linux-headers-3.13.0-39-generic
linux-headers-3.13.0-40
linux-headers-3.13.0-40-generic
linux-headers-3.13.0-44
linux-headers-3.13.0-44-generic
linux-headers-3.13.0-45
linux-headers-3.13.0-45-generic
linux-image-3.13.0-32-generic
linux-image-3.13.0-36-generic
linux-image-3.13.0-37-generic
linux-image-3.13.0-39-generic
linux-image-3.13.0-40-generic

Kemudian memilih gambar pertama yang akan dihapus

$ sudo apt-get purge linux-image-3.13.0-32-generic
Reading package lists... Done
Building dependency tree       
Reading state information... Done
You might want to run 'apt-get -f install' to correct these:
The following packages have unmet dependencies.
 linux-image-extra-3.13.0-32-generic : Depends: linux-image-3.13.0-32-generic but it is not going to be installed
 linux-image-extra-3.13.0-44-generic : Depends: linux-image-3.13.0-44-generic but it is not going to be installed
 linux-image-extra-3.13.0-45-generic : Depends: linux-image-3.13.0-45-generic but it is not going to be installed
 linux-image-generic : Depends: linux-image-3.13.0-45-generic but it is not going to be installed
E: Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a solution).

38
2018-02-15 13:00


asal


Harap edit pertanyaan Anda dan hasilnya sudo apt-get autoremove dan ls /boot. - muru
Coba jawaban Phrog. Menggunakan uname -r perintah untuk mengetahui versi kernel Anda saat ini, dan coba hapus kernel selain itu. - muru


Jawaban:


Dalam hal demikian saya akan menggunakan dpkg alat untuk memaksa penghapusan beberapa paket kernel. Ini tidak disarankan untuk penggunaan umum dan sedikit berbahaya, tetapi dalam hal demikian dengan dependensi yang tidak terpenuhi dapat membantu.

Pertama-tama cari kernel di mana sistem di-boot. Salah satu yang saat ini dimuat. Buka terminal (CTRL + ALT + T) dan jalankan perintah berikut

uname -r

Ini akan menunjukkan kepada Anda kernel yang dimuat, Anda tidak harus mencoba untuk menghapus yang ini.

Kemudian berikan perintah

ls /boot 

ini akan mengembalikan semua gambar yang terinstal. Pilih satu atau dua dan coba untuk menghapusnya. Coba paksa hapus / bersihkan mereka. Sebagai contoh

sudo dpkg --force-all -P linux-image-3.13.0-32-generic

Anda dapat melakukan hal yang sama untuk gambar lain, untuk membebaskan beberapa ruang.

Kemudian Anda dapat mencoba menginstal paket yang hilang, atau

sudo apt-get install -f 

untuk mencoba menyelesaikan dependensi.

Akhirnya, berikan perintah "pembersihan kernel lama"

 sudo apt-get purge $(dpkg -l linux-{image,headers}-"[0-9]*" | awk '/ii/{print $2}' | grep -ve "$(uname -r | sed -r 's/-[a-z]+//')")

Perintah di atas akan menghapus SEMUA kernel kecuali yang saat ini dimuat.

Karena Anda memiliki partisi / boot terpisah, perlu diingat Anda harus melacak ruangnya dan sering membersihkan (frekuensi tergantung pada ruang / boot)


50
2018-02-15 13:39



Hai ketika saya mencoba untuk menghapusnya saya mendapatkan error sudo dpkg --force-all -P abi-3.13.0-32-generic dpkg: peringatan: mengabaikan permintaan untuk menghapus abi-3.13.0-32-generic yang tidak diinstal - Philip Howard
Saya mengedit jawabannya, karena salah cetak. Anda perlu menghapus paket. The abi-3.13.0-32-generik bukan nama paket. Sebagai gantinya gunakan linux-image-3.13.0-32-generic . Gunakan penamaan yang sama untuk gambar lain. - Nick Thom
Ini bekerja untuk saya, dengan satu modifikasi: setelah menghapus gambar kernel dengan dpkg, Saya harus lari sudo apt-get -f autoremove mendapatkan apt-get berhenti mengeluh tentang ketergantungan yang tidak terpenuhi. Jika tidak, sudo apt-get -f install tampaknya terus mencoba menginstal ulang semua gambar kernel yang telah saya hapus dpkg, yang jelas baru terisi /boot lagi. - mdunsmuir
Setelah gaya dibersihkan dan apt-get -f autoremove di komentar @mdunsmuir di atas, masih ingin menginstal semua kernel lama selama operasi pembersihan di atas. Apakah ada cara untuk memberitahukannya untuk mengabaikan dependensi yang tidak terkait dan menghapus satu, kernel lama yang lengkap? - NKijak
Saya ingin menambahkan bahwa saya juga harus menghapus tambahan dengan sudo dpkg --force-all -P linux-image-extra-3.13.0-32-generic. Jika tidak, tambahan ini masih bergantung pada gambar yang sebenarnya dan -f Bendera akan menyebabkan gambar di-instal ulang dan kemudian kehabisan ruang disk. - Ghostkeeper


Inilah yang berhasil bagi saya di Ubuntu 16.04.

sudo apt autoremove --purge
sudo apt autoremove
sudo apt-get -f install
sudo apt-get upgrade

2
2018-01-15 12:20





Daftar semua kernel:

dpkg --list 'linux-image*'

Tampilkan kernel saat ini:

uname -r

Daftar semua kernel KECUALI saat ini:

dpkg -l linux-{image,headers}-"[0-9]*" | awk '/^ii/{ print $2}' | grep -v -e `uname -r | cut -f1,2 -d"-"` | grep -e '[0-9]'

Pastikan kernel Anda saat ini tidak ada dalam daftar itu.

Hapus semua kernel KECUALI saat ini:

dpkg -l linux-{image,headers}-"[0-9]*" | awk '/^ii/{ print $2}' | grep -v -e `uname -r | cut -f1,2 -d"-"` | grep -e '[0-9]' | xargs sudo apt-get -y purge

Hapus barang-barang lainnya:

sudo apt-get autoremove

2
2018-05-21 16:44



Jika masih memberi Anda kesalahan ruang disk boot untuk menginstal / menghapus file, maka langsung hapus salah satu gambar lama dari / boot direktori, ls-lh /boot/*-3.13.0-119*; rm /boot/*-3.13.0-119*; CATATAN: Harap tinjau gambar kernel saat ini lagi sebelum menghapus gambar apa pun. - Hemant Thorat