Yanlış disk dolu hatası: apt-get yüklenemiyor veya kaldırılamıyor


24

Ubuntu 12.04 sunucumu yükseltirken aşağıdaki hata ile karşılaştım. Artık apt-gethiçbir paket yüklenemiyor veya kaldırılamıyor.

Ambalajın açılması Linux-headers-3.13.0-62 (… 'den / linux-headers-3.13.0-62_3.13.0-62.102 ~ precise1_all.deb)
dpkg: hata işleme /var/cache/apt/archives/linux-headers-3.13.0-62_3.13.0-62.102~precise1_all.deb (- paket):
 `/ usr/src/linux-headers-3.13.0-62/arch/arm/include/asm/ptrace.h.dpkg-new 'oluşturulamıyor 
(`./usr/src/linux-headers-3.13.0-62/arch/arm/include/asm/ptrace.h 'işlenirken): Aygıtta yer kalmadı , hata mesajı diski gösterdiği için 
yazılı rapor yok tam hata
 dpkg-deb: error: alt işlem macunu sinyal ile öldürüldü (Bozuk boru)
İşleme sırasında hatalarla karşılaşıldı:
 /var/cache/apt/archives/linux-headers-3.13.0-62_3.13.0-62.102~precise1_all.deb
E: Alt işlem / usr / bin / dpkg bir hata kodu döndürdü (1)

Gerçi disk alanım bitmiyor olsa da,

# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1       6.8G  4.7G  1.8G  69% /  

Her neyse, düğümlerim dolu.

# df -i
Filesystem     Inodes   IUsed  IFree IUse% Mounted on
/dev/sda1      458752  455214   3538  100% /

Ondan fazla eski çekirdeğim var ancak bunları kendim apt-gettopal olduğu için kaldıramıyorum . Bu yüzden benzer bir sorun bildiren bu yazıyı takip edemiyorum .

Tek seçenek, birkaç eski çekirdeği el ile silmek gibi görünüyor. Herhangi bir soruna neden olur mu?

Daha iyi bir çıkış yolu var mı? Şimdilik kök için ayrılmış alanı kullanabilir miyim ve eski çekirdekleri kaldırabilir miyim?


1
Gerçekten /usr/srcde durumdan kurtulmak için birkaç eski çekirdeği el ile kaldırdım . Neyse ki her şey iyi gitti ve apttekrar çalışmaya başladı. Ama bir üretim makinesinde böyle bir şey yapmadan önce geri almanı isteyeceğim. Tamamen yedeği olan sanal bir makinede yaptım.
souravc

İşe yarıyor! Aynısını burada da (ubutu 14.04.1) çekirdeği 4.4.0-51-jenerikine güncellemek için yaptım. Gelecekte herhangi bir soruna yol açıp açmayacağından emin değilim. Teşekkürler.
Moreno

Yanıtlar:


36

Bu yazının biraz eski olduğunu biliyorum, ancak bu yazının üzerine yanılabilecek herkes için bir cevap buldum: https://help.ubuntu.com/community/RemoveOldKernels

Bu bağlantının kopması durumunda, ilgili kod parçası:

Eski Çekirdekleri Güvenle Çıkarma

LVM sistemleri kullanıcıları, şifreli sistemler veya sınırlı depolama sistemleri kullanıcıları için en sık karşılaşılan sorun / boot bölümünün tamamen dolu olmasıdır. Paket yöneticisi, yer yetersizliğinden dolayı bekleyen bir yükseltme kuramıyor. Ayrıca, apt-get, bağımlılığı nedeniyle bir paketi kaldıramaz.

Bu problem kabuktan hızlı ve kolay bir şekilde çözülebilir. Elle kaldırmak için bir veya iki eski çekirdeği tanımlamanız yeterlidir; bu, paket yöneticisine kuyruğa alınan yükseltmeyi kurmak için yeterli alan sağlayacaktır.


$ sudo rm -rv ${TMPDIR:-/var/tmp}/mkinitramfs-*  
                                  ## In Ubuntu 16.04 and earlier there may be leftover temporary
                                  ## files to delete.
                                  ## See: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=814345

$ uname -r                        ## This command identifies the currently-running kernel
4.2.0-21-generic                  ## This is the current kernel.
                                  ## DO NOT REMOVE it!

$ dpkg -l | tail -n +6 | grep -E 'linux-image-[0-9]+' | grep -Fv $(uname -r)
                                  ## This command lists all the kernels excluding the booted
                                  ## kernel in the package database, and their status.
rc  linux-image-4.2.0-14-generic  ## The oldest kernel in the database
                                  ## Status 'rc' means it's already been removed
ii  linux-image-4.2.0-15-generic  ## The oldest installed kernel. Eligible for removal.
                                  ## Status 'ii' means Installed.
ii  linux-image-4.2.0-16-generic  ## Another old installed kernel. Eligible for removal
ii  linux-image-4.2.0-18-generic  ## Another old installed kernel. Eligible for removal
ii  linux-image-4.2.0-19-generic  ## The previous good kernel. Keep
iU  linux-image-4.2.0-22-generic  ## DO NOT REMOVE. Status 'iU' means it's not installed,
                                  ## but queued for install in apt.
                                  ## This is the package we want apt to install.

                                  ## Purge the oldest kernel package using dpkg instead of apt.
                                  ## First you need to remove the image initrd.img file manually
                                  ## due to Bug #1678187.
$ sudo update-initramfs -d -k 4.2.0-15-generic
$ sudo dpkg --purge linux-image-4.2.0-15-generic linux-image-extra-4.2.0-15-generic
                                  ## If the previous command fails, some installed package
                                  ## depends on the kernel. The output of dpkg tells the name
                                  ## of the package. Purge it first.

                                  ## Also purge the respective header package.
$ sudo dpkg --purge linux-headers-4.2.0-15-generic
                                  ## Try also purging the common header package.
$ sudo dpkg --purge linux-headers-4.2.0-15
                                  ## Do not worry, if the previous command fails.

$ sudo apt-get -f install         ## Try to fix the broken dependency.

Bunu şöyle takip ettim:

sudo apt-get autoremove --purge

9

Durumdan şimdi çıktım ve durumdan /usr/srckurtulmak için birkaç eski çekirdeği çıkardım . Neyse ki her şey yolunda gitti ve apt tekrar çalışmaya başladı.

Bir üretim makinesinde eski çekirdekleri çıkarmadan önce geri alınması şiddetle tavsiye edilir.


Daha iyi bir çözüm hala açığız. Ben göndermeden Bu yorumu biri yardımcı olabilir cevap olarak.
souravc

1
Bazı eski çekirdekleri çıkardıktan apt-get autoremove ve bazı güvenilirlikler koyduktan sonra apt-get -f installsorunlarımı düzelttim
Thamaraiselvam

TEŞEKKÜR EDERİM. Ben altındaki tüm Linux'ları * kaldırdım /bootama kullanmadım, dkpgbu yüzden hala *-headerdosyalar vardı/usr/src
Dylan Pierce
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.