Karşılanmayan bağımlılıklar nedeniyle dolu / önyükleme yapamıyor


43

/ Boot'ımın dolu olduğunu açıklayan bir hata mesajı aldım. eski görüntü dosyalarını temizlemeye çalışırken her zaman tam disk veya bağımlılık hataları nedeniyle başarısız görünüyor. Birisi nerede yanlış gittiğimi açıklayabilir mi?

$ 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

kullandım

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

almak

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

Sonra kaldırılacak ilk resmi seçmek

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

Sorunuzu ve çıktısını düzenleyin sudo apt-get autoremoveve ls /boot.
muru

Phrog'un cevabını dene. uname -rGeçerli çekirdek sürümünüzü bulmak için komutu kullanın ve ondan başka bir çekirdeği çıkarmayı deneyin.
muru

Yanıtlar:


64

Bu durumda dpkgaracı bazı çekirdek paketlerinin çıkarılmasını zorlamak için kullanırdım . Bu yaygın kullanım için önerilmemiştir ve biraz tehlikelidir , ancak bu durumda karşılanmayan bağımlılıklar yardımcı olabilir.

Her şeyden önce, sistemin başlatıldığı çekirdeği bulun. Şu anda yüklü olan. Bir terminal açın (CTRL + ALT + T) ve aşağıdaki komutu verin

uname -r

Size yüklenen çekirdeği gösterecek, bunu çıkarmaya ÇALIŞMAMALIDIR.

Ardından komutu verin

ls /boot 

yüklü tüm görüntüleri döndürür. Bir veya iki tane seç ve onları çıkarmaya çalış. Bunları sökmeye / temizlemeye zorlayın. Örneğin

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

Biraz yer açmak için diğer görüntüler için de aynısını yapabilirsiniz.

Sonra eksik paketleri yüklemeyi deneyebilirsiniz veya

sudo apt-get install -f 

bağımlılıkları çözmeyi denemek için.

Son olarak, "eski çekirdeklerin temizlenmesi" komutunu verin

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

Üstteki komut, o anda yüklü olanlar dışındaki tüm çekirdekleri kaldıracaktır.

Ayrı / önyükleme bölümünüz olduğundan, alanını izlemeniz ve sık sık temizlemeniz gerekeceğini unutmayın (sıklık / önyükleme alanına bağlıdır)


1
Merhaba onları silmeyi denediğimde sudo dpkg hatası alıyorum. yüklü
Philip Howard

9
Bu, bir değişiklikle, benim için çalıştı: ile çekirdek görüntüleri çıkardıktan sonra dpkg, ben çalıştırmak zorunda sudo apt-get -f autoremovealmak için apt-getkarşılanmamış bağımlılıkları şikayet durdurmak için. Aksi halde, sudo apt-get -f installgörünüşe göre çıkardığım tüm çekirdeği yeniden yüklemeyi denemeye devam ettim dpkg, bu da açıkça /bootyeniden doldurulmuş .
mdunsmuir

4
apt-get -f autoremoveZorla temizleme işleminden ve yukarıdaki mdunsmuir yorumundan sonra , yukarıdaki temizlik işlemlerinin herhangi biri sırasında tüm eski çekirdekleri yüklemek istiyor. İlişkisiz bağımlılıkları görmezden gelip, tek ve eksiksiz bir çekirdeği çıkarmasını söylemenin bir yolu var mı?
NKijak

3
Ekstraları da kaldırmak zorunda olduğumu eklemek isterim sudo dpkg --force-all -P linux-image-extra-3.13.0-32-generic. Aksi halde, bu ekstralar hala gerçek görüntüye bağlıdır ve -fbayrak görüntünün yeniden yüklenmesine ve daha sonra disk alanının bitmesine neden olur.
Ghostkeeper

1
@ LonnieBest katılıyorum. Buna karşılık, Arch Linux sadece bir geri dönüşe devam ediyor. Fedora'da da bu sorun var gibi görünmüyor.
Franklin Yu

5

16.04'te Ubuntu'da benim için çalıştı.

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

Bu yöntem benim için çalıştı.
Bok

2

Tüm çekirdekleri listele:

dpkg --list 'linux-image*'

Geçerli çekirdeği görüntüle:

uname -r

Geçerli olanları hariç tüm çekirdekleri listele :

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

Mevcut çekirdeğinizin listede olmadığından emin olun.

Geçerli olanın dışındaki tüm çekirdekleri çıkar :

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

Diğer şeyleri temizle:

sudo apt-get autoremove

Dosyaları yüklemek / kaldırmak için hala önyükleme diski alanı hatası veriyorsa, doğrudan eski görüntülerden birini / boot dizininden kaldırın, ls -lh /boot/*-3.13.0-119*; rm / boot/*-3.13.0-119*; NOT: Herhangi bir resmi silmeden önce lütfen mevcut çekirdek görüntüsünü tekrar gözden geçirin.
Hemant Thorat

Hala karşılanmamış dependancies sahip olduğunu şikayet
Matiss Jurgelis
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.