Yükseltme sırasında yeterli boş disk alanı yok


142

Günlük güncellemeleri yapmaya çalıştığımda, yazılım güncelleyicisinde hata alıyorum. diyor ki:

The upgrade needs a total of 25.3 M free space on disk `/boot`.
Please free at least an additional 25.3 M of disk space on `/boot`.
Empty your trash and remove temporary packages of former installations 
using `sudo apt-get clean`.

sudo apt-get cleanTerminal'e yazmayı denedim ama hala mesajı alıyorum. Okuduğum tüm sayfalar deneyimli Ubuntuers için görünüyor. Ubuntu 12.10'u çalıştırıyorum. 13.04'e yükseltmek istiyorum, ancak önce bunları bitirmem gerektiğini anladım.

Bu, cat /etc/fstabTerminal'e yazmanın sonucudur:

# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
/dev/mapper/ubuntu-root /               ext4    errors=remount-ro 0       1
# /boot was on /dev/sda1 during installation
UUID=fa55c082-112d-4b10-bcf3-e7ffec6cebbc /boot           ext2    defaults        0       2
/dev/mapper/ubuntu-swap_1 none            swap    sw              0       0
/dev/fd0        /media/floppy0  auto    rw,user,noauto,exec,utf8 0       0
matty@matty-G41M-ES2L:~$ 

Çıktı df -h:

Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/ubuntu-root  915G   27G  842G   4% /
udev                     984M  4.0K  984M   1% /dev
tmpfs                    397M  1.1M  396M   1% /run
none                     5.0M     0  5.0M   0% /run/lock
none                     992M  1.8M  990M   1% /run/shm
none                     100M   52K  100M   1% /run/user
/dev/sda1                228M  222M     0 100% /boot
matty@matty-G41M-ES2L:~$ 

Ve dpkg -l | grep linux-imageverir:

ii linux-image-3.5.0-17-generic 3.5.0-17.28 i386 Linux kernel image for version 3.5.0 on 32 bit x86 SMP
ii linux-image-3.5.0-18-generic 3.5.0-18.29 i386 Linux kernel image for version 3.5.0 on 32 bit x86 SMP
ii linux-image-3.5.0-19-generic 3.5.0-19.30 i386 Linux kernel image for version 3.5.0 on 32 bit x86 SMP
ii linux-image-3.5.0-21-generic 3.5.0-21.32 i386 Linux kernel image for version 3.5.0 on 32 bit x86 SMP
ii linux-image-3.5.0-22-generic 3.5.0-22.34 i386 Linux kernel image for version 3.5.0 on 32 bit x86 SMP
ii linux-image-3.5.0-23-generic 3.5.0-23.35 i386 Linux kernel image for version 3.5.0 on 32 bit x86 SMP
ii linux-image-3.5.0-24-generic 3.5.0-24.37 i386 Linux kernel image for version 3.5.0 on 32 bit x86 SMP
ii linux-image-3.5.0-25-generic 3.5.0-25.39 i386 Linux kernel image for version 3.5.0 on 32 bit x86 SMP
ii linux-image-3.5.0-26-generic 3.5.0-26.42 i386 Linux kernel image for version 3.5.0 on 32 bit x86 SMP
iF linux-image-3.5.0-28-generic 3.5.0-28.48 i386 Linux kernel image for version 3.5.0 on 32 bit x86 SMP

1
Ayrıca, / etc / fstab dosyanızın içeriği yardımcı olabilir. Görünüşü şudur ki / boot ayrı bir bölüme monte edilmiştir.
Chuck R,

1
@Githlar'ın dediği gibi fstab'ınız bize hd bölümleriniz hakkında bilgi verebilir.
ssoto

1
fstab, bilgisayarınızı başlattığınızda monte edilen bölümler hakkında bilgi içeren bir dosyadır. Bu dosyanın içeriğini göstermek için cat /etc/fstabbir terminal girin. Çıktıyı kopyalayın ve sorunuza ekleyin (sorunuzu düzenleyebilirsiniz). Ayrıca çıktısını kopyalamak df -hve dpkg -l | grep linux-image.
Alaa Ali

1
Sorununuz, fazla boş alan kullanan bölümdeki tüm ekstra linux-image...dosyalar - bu /bootbölümde yalnızca 6 MB boş alanınız var. sudo dpkg -P purge 'older_linux_image_filename'en son sürümler hariç tümü kaldırmak için = 3.5.0-28.48 ve 3.5.0-26.42 Bu güncelleme / yükseltme yapmanızı sağlar.
douggro

2
Sadece sudo apt-get autoremovebunu düzeltmek için koşmam gerekiyordu.
Juampy NR

Yanıtlar:


192

Not: Bu cevap eski çekirdeği kaldırmak için en iyi / en kolay yolu sağlamaktan çok, bir 'açıklama' anlamına gelir. Eski çekirdekleri kaldırmanın en iyi / en kolay yolu, lütfen diğer cevapları gözden geçirin.

Tamam, /etc/fstabgönderdiğiniz çıktıdan, /bootayrı bir bölüme monte edilmiş gibi görünüyor ve df -hbu bölümün çıktısından itibaren dolu. Bunun nedeni, gerekmeyen eski çekirdeklerin kurulu olması; Farklı versiyonlara sahip dpkg -l | grep linux-imagebirden fazla " linux-image " görebileceğiniz, gönderdiğinizin çıktısına bakarak bunu söyleyebilirsiniz . Eski sürümleri kaldırmamız gerekiyor.

İlk önce komutu uname -rbir terminalde çalıştırmanızı istiyorum , bu size şu anda kullanmakta olduğunuz çekirdek versiyonunu gösterecektir. Bu çekirdek sürümünü asla kaldırmak istemiyoruz. Komut böyle bir şey söyleyecek . O numarayı not al ! Aşağıdaki komutlar, çalıştırdığınız çekirdeğin bu olduğunu varsayacaktır.3.5.0-26-generic26

Eski bir çekirdek sürümünü kaldırma komutu:

sudo apt-get purge linux-image-x.x.x-xx-generic

... x karakterleri sayıdır. Bu nedenle, sizin durumunuzda, çok sayıda eski sürümünüz olduğundan (17, 18, 19, vb.), Bu komutu aşağıdaki sürümlerin her biri için çalıştırmamız gerekiyor, şöyle:

  • sudo apt-get purge linux-image-3.5.0-17-generic
  • sudo apt-get purge linux-image-3.5.0-18-generic
  • sudo apt-get purge linux-image-3.5.0-19-generic

...ve bunun gibi. Ancak, tüm bunları tek bir komutla yapmanın bir yolu var. Komut şudur ( YETİŞTİRMEYİN YET ÇALIŞMAYIN! Aşağıdakileri okuyun. ):

sudo apt-get purge linux-image-3.5.0-{17,18,19,21,22,23,24}-generic

Bu komut parantez içinde belirtilen sürümleri kaldıracaktır. Aşağıdaki nedenlerden dolayı sürüm 25, 26 ve 28'i eklemedim:

  • Açıkçası 26 dahil etmedi, çünkü şu anda çalıştırmakta olduğunuz çekirdek sürüm! Bu emirden aldığımız sürüm bu uname -r, hatırladın mı? Bunu asla kaldırmak istemeyiz!
  • 28'i dahil etmedim, çünkü yükseltme işleminizin yükseltmeye çalıştığı özellik buydu (bundan iFsonraki durumdan bunu anlayabilirsiniz , yani "yarı yapılandırılmış" demektir).
  • 25'i dahil etmedim, çünkü en az bir eski sürümü bırakmak genellikle iyi bir uygulamadır. Yani, 26'yı çalıştırdığın için, 25'i tutacağız, bu yüzden yukarıdaki komuta dahil etmeyeceğiz.

Bu nedenle, son sayı uname -r26 (veya 28, hatta 25) ise, yukarıdaki komutu çalıştırmak güvenlidir. İstendiğinde şifrenizi girin ve sorulduğunda yazın y. Bu, bir sürü satır gösterecek ve nihayetinde matty@matty-G41M-ES2L:~$hatasız komut istemine (sizin durumunuzda ) geri dönecektir . İşiniz bittiğinde, en başındaki df -hçizgiyi yapın ve son satıra bakın /dev/sda1. Şimdi daha fazla alana sahip olduğunu ve kullanılan yüzdesinin eskisi gibi% 100'den az olduğunu bulmalısınız. Şimdi güncellemenize tekrar devam edebilirsiniz.


1
İşe yaradı!!! Çok teşekkürler! Bonus soru: Ubuntu'yu ilk indirdiğimde, yanlışlıkla evdeki "resimler" klasörünü sildim. Bundan dolayı, yanda "resim" sekmesi yoktur. Sadece "resimler" adlı bir klasör oluşturarak bu sorunu çözdüm, ancak kenar çubuğunda görünmüyor. Oraya nasıl gideceğini biliyor musun? Tıklayıp sürüklemeye çalıştım ama boşuna. @Alaa
carmatt95

3
Rica ederim! Diğer soru için, başka bir soru oluşturun ve cevaplayacağım. Bu şekilde, bu sorunu arayan insanlar onu bulabilir.
Alaa Ali,

13
Keşke her referans için geri döndüğümde bunu yeniden oylayabilseydim ... şimdiye dek çok şey olurdu.
sevenseacat

4
Evet, aynı şeyi tekrar referanslamak için tekrar buraya. Şimdiye kadar hatırlayacağımı düşünürdün.
sevenseacat

2
Tüm eski çekirdekleri temizlemek için daha özlü bir komut şudur:sudo apt-get autoremove --purge
ctrueden

42

Ubuntu-Tweak'i yükleyebilirsiniz. Yüklemek için aşağıdaki adımları izleyin:

Terminali aç. İstenilen depoyu aşağıdaki komutu kullanarak ekleyin:

sudo add-apt-repository ppa:tualatrix/ppa

Yazılım listesini şu komutla güncelleyin:

sudo apt-get update

Son olarak, şu komutla Ubuntu Teak'i kurun:

sudo apt-get install ubuntu-tweak

Bundan sonra, kısa çizgi açın ve "ubuntu tweak" yazın.

Sonra gidip janitorsekmesine basıp Apps, Personalve Systemkutuyu işaretleyin ve cleansağ alt kısmında düğmesini.


9
Komut satırıyla uğraşmaktan ve tüm çekirdeği silmeye çalışmaktan çok daha iyi, ancak farklı sürümleri (yalnızca sonunda -32 değil) ve ayrıca -extra paketleri olduğunda geçerli değil. Ubuntu tweak bana 5 dakika kazandırdı, teşekkürler!
POMATu

Çok daha uygun.
Saeed Amiri

PPA'yı ekleyemedim ama proyect'in.deb web sitesinden indirdim ubuntu-tweak.com
Luigi Siri

ubuntu'da PPA eklemenize gerek yok 14.04
Edward Torvalds

1
@ edwardtorvalds Tabii ki, PPA'yı 14.04'e ve ayrıca 14.10'a paketine eklemeden de kurabilirsiniz .deb, ancak en çok tercih edileni değil. Bunu PPA üzerinden kurmak istemenizin nedeni güncellemeleri sağlamaktır.
α Decsнιη

17

Kullanılmayan tüm çekirdekleri ve başlıkları (şu anki çalışan çekirdek hariç) kaldırmanın hızlı bir yolu @ Leeksteyn tarafından / boot'da daha fazla yer açabilirim sorusuna cevabını verdi. :

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

Bu, yükseltmeniz için yeterli alan bırakmalıdır.



3

Evimdeki Ubuntu sistemimde yayınlananlara benzer bir yöntem izliyorum, ancak biraz daha basit ve çekirdek başlıkları, vb.

  1. Ben olduğu gibi ben kullanıyorum neyi çekirdeği çalıştıran kontrol şart olduğunu müdahale etmemesi.

    uname -a
    
  2. Ardından, doğrudan çalışan çekirdeğe bağlı olmayan tüm çekirdeğe bağlı dosyaları kaldırmak amacıyla / boot'a bakarım . Bu, kaldırmak istediğim tüm çekirdek sürümlerinin bir listesini verir, örneğin: 3.5.0-17, 3.5.0-18

    ls -l /boot
    
  3. Şimdi temizleme listemdeki ilk çekirdek sürümünü alıyorum ve onunla ilgili tüm paketleri buluyorum.

    dpkg -l | grep 3.5.0-17
    
  4. Onları sistemden temizle

    sudo apt-get purge <list of packages separated by spaces>
    
  5. 3'e geri dönün ve temizleme listemdeki bir sonraki çekirdek sürümünü seçin.

  6. tamam


1

Bu hatayı alıyordum, bu yazı yardımcı oldu.

Kullandığım df -ho çizme, doluydu tespit etmek uname -rsürümü için, daha sonra kullanılan purgeyukarıda listelenen dize eski çekirdeklerini çıkarıp. Tek çekirdekli tasfiye çalıştı, çok (benim için) yapmadı.

Dosyaları Windows olayında buldum; Onları silemedim, terminali kullanmak zorunda kaldım, ama bana içinde bulunduğum eski versiyonları gösterdi.

Neden / boot (sda2) 'nin bölünmüş olduğu ve neden bu kadar küçük olduğu hakkında hiçbir fikrim yok. ama şimdi tekrar Ubuntu güncelleyicisini kullanabilirim.

Birlikte bazı küçük başarı kazandığını sudo apt-get update, sudo apt-get upgrade, sudo apt-get clean, ayrıca denenmiş özgür yazılım BleachBit. Temizleme dizesini kullanın, ancak geçerli sürümünüzde kullanmayın. Umarım bu birine yardımcı olur.


düzenleme: temizleme dizesine "-generic" eklemek zorunda olduğunu sanmıyorum
Brian P

0

Kullanılmayan eski çekirdek görüntü paketleriniz var mı? Bunlar / boot sırasında yer kaplayabilir. Yüklü çekirdek paketlerini aşağıdaki gibi bir komutla gözden geçirmenizi tavsiye ederim:

dpkg -l "linux-image*" | grep "^i"

Bu, kurulu olan çekirdek görüntü paketlerine genel bir bakış sağlamalıdır. Olanlar için linux-image kullanılmayan ve kurtarma amacıyla gerekli olması beklenen olmaz paketleri - örneğin, mesela ben kurtarma için, yüklü aktif sürümü arkasında en az bir çekirdek sürümünü tutmak ister - Aksi, Bu gibi kullanılmayan paketleri, yetenek gibi en sevdiğiniz paketleme aracını kullanarak kaldırabilirsiniz.

Ayrıca , kullanılmayan linux görüntü paketleriyle birlikte kurulabilecek ilgili inux-headers , linux-image-extras (eğer varsa), linux-source ve linux-tools paketlerine de bir göz atmanızı tavsiye ederim .


0

Varsa, insanların çoğunun bu soruna maruz kalacağından şüpheliyim, ancak herhangi birinin ihtiyaç duyması durumunda dokümantasyon için buraya koyuyorum.

Benim sorunum, boş alan bitene kadar farklı özel çekirdekleri derlemekti. Alanı temizlememin yolu, çalıştığım her bir çekirdek dizinine girmek ve a çalıştırmaktı sudo make clean.

  • $ cd /usr/src Çekirdek kaynağının bulunduğu dizin
  • $ cd linux-image-custom_kernel_name
  • $ sudo make clean

0

Marianoju'nun cevabı gerçekten yardımcı oldu, ancak kullanmada hatam vardıapt purge . Bir güç seçeneği bulamadım.

Düşük dpkg seviyesinin birleştirilmesi devam etmeme izin verdi:

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

0

Eğer bunlara sahipseniz eski çekirdek imaj paketlerini kaldırmak için aşağıdaki komutu deneyebilirsiniz.

sudo apt autoremove

Bundan sonra güncelleme yapabilir

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.