Bijwerken / installeren van pakketten is mislukt - Ruimteproblemen - Maak inodes vrij

Merk allereerst op dat dit een specifieke fout is vanwege de kenmerken van mijn rootpartitie en dat het meestal niet voorkomt bij typische installaties 

Om te beginnen zal ik de geschiedenis noemen van hoe het probleem is ontstaan ​​en vervolgens hoe het kan worden opgelost.

Mijn team is een Sony Vaio m120AL netbook dat ik al ongeveer 3 lange jaren heb met een 320 GB harde schijf waar ze naast elkaar bestaan Windows 7, chakra , mijn werkpartitie met Xubuntu 12.04, de swappartitie, de / home-partitie en een extra informatiepartitie waarmee ik informatie deel Windows.

Om deze redenen zijn mijn rootpartities op beide systemen naar de meeste standaarden aanzienlijk klein (ongeveer 6GB elk), maar ze hebben me nooit een probleem opgeleverd, aangezien ze meer dan genoeg zijn voor alle pakketten die ik nodig heb.

Nu, het invoeren van de specifieke situatie, een paar dagen geleden enkele updates toepassen in Xubuntu (waaronder een nieuwe Kernel is inbegrepen) Ik zie dat de updatebeheerder een foutmelding geeft dat hij probeert linux-image-3.2.0-51-generiek te installeren, maar dat zijn afhankelijkheid linux-headers-3.2.0-51 het zal niet worden geïnstalleerd, ik bekijk de fout in detail en ik merk dat dpkg klaagt dat er geen ruimte beschikbaar is.

De fout zei iets van deze stijl, hoewel niet identiek omdat ik het niet heb opgeschreven:

kon '/usr/src/linux-headers-3.2.0-43/arch/xtensa/include/asm/coprocessor.h.dpkg-new' niet aanmaken (tijdens het verwerken './usr/src/linux-headers -3.2.0-43 / arch / xtensa / include / asm / coprocessor.h '): geen ruimte meer op apparaat

Bij een eerdere gelegenheid is mij hetzelfde overkomen, maar het was omdat ik verschillende oude kernels had laten opstapelen zonder ze te verwijderen, maar deze keer controleer ik en ik heb praktisch 600 Mb beschikbaar volgens Conky van wat ik niet begrijp, maar om te bevestigen of het een fout kan zijn in hoe ik het had geconfigureerd of iets dergelijks, voer ik een df -h:

df -h

Maar ik heb nog steeds ruimte in /!

Dus ik vergis me niet en dat is meer dan genoeg ruimte om de update uit te voeren (ik heb het zo vaak gedaan in het lange jaar sinds ik bij Xubuntu ben) hoe dan ook, ik doe een sudo apt-get clean om de pakketten die ik heb gedownload op te schonen en het opnieuw te proberen, maar met hetzelfde resultaat.

Ik vind het nog steeds raar, maar ik probeer hoe dan ook uit / de pictogramthema's te gaan die ik altijd gebruik en die ik veel heb aangepast (Faenza y awoken) om meer ruimte vrij te maken, en dus eindelijk de update uit te voeren, door opnieuw te gaan om ze terug te zetten naar /.

Het idee bleef echter in mijn hoofd dat de zaak ergens anders heen moest, maar ik wist niet welke. Een paar uur later, wanneer ik wat extra pakketten probeer te installeren, krijg ik de bovengenoemde fout opnieuw, en er was weer genoeg ruimte over, dus ik wijd me aan het onderzoeken.

Een zoekopdracht op internet leidt me naar verschillende threads op de forums van ubuntu-is, maar het antwoord van sommige individuen is er altijd hetzelfde: je hebt niet genoeg ruimte, verwijder bestanden of breid de rootpartitie uit, maar ik merkte iets gemeenschappelijks in de verschillende threads die ik vond, altijd de rootpartitie die vrije ruimte had, maar Het was vergelijkbaar met het mijne (~ 600-900 Mb) en de grootte van de partitie was nooit groter dan 10 Gb, dus ik overtuigde mezelf ervan dat het probleem een ​​ander probleem moest zijn, en zo kwam ik bij de titel van het bericht dankzij esta pagina, is het probleem dat de rootpartitie 100% van de gebruikte inodes had.

Het gebruik van inodes is te zien bij het commando df-ik:

100% gebruikte inodes

100% gebruikte inodes

En nu komt de uitleg.

De inodes zijn in het woord van Dennis Ritchie:

Een index, vanwege de enigszins ongebruikelijke structuur van een bestandssysteem dat de toegangsinformatie tot de bestanden opsloeg als een platte lijst op schijf, waarbij alle hiërarchische informatie van de mappen buiten beschouwing werd gelaten

en daarom kan het gebeuren dat er voor een bepaald bestandssysteem nog steeds vrije ruimte is om bestanden op te slaan, maar er zijn geen inodes beschikbaar om ze te indexeren omdat er veel bestanden in het systeem zijn en daarom kunnen er geen nieuwe worden gemaakt.

Het punt is dat het aantal inodes in een partitie EXT4 kan niet worden gewijzigd (er zijn andere soorten systemen zoals JFX o XFS waar dit geen beperking is omdat het dynamisch is) het is een vast getal dat wordt berekend wanneer de partitie wordt aangemaakt met mkfs.ext4 op basis van zijn grootte met een verhouding van bytes per inode volgens de voorkeuren in /etc/mke2fs.conf.

Bij het installeren van het systeem is het gebruikelijk om de standaardvoorkeuren te gebruiken die een inode = 16384-relatie bevatten, die voor kleine partities te groot zou kunnen zijn en niet genoeg zou creëren (zoals in mijn geval). De enige manier om het te wijzigen is door de partitie te maken / formatteren en deze te specificeren met de optie -i.

Dit was echter geen optie voor mij, aangezien ik al zei dat de inodes gerelateerd zijn aan het aantal bestaande bestanden, dus gebruik het volgende bash-script in stapeloverloop en dat het is gekoppeld op de pagina die u eerder noemde om te achterhalen welke mappen in de rootpartitie waren met meer bestanden:

belangrijk om te weten dat het script de directory analyseert van waaruit het wordt aangeroepen, dat wil zeggen, omdat ik in mijn geval geïnteresseerd was in het analyseren van / Nou, eerst in de terminal waar ik mee moet verhuizen cd / en dan als je het script wilt bellen
#!/bin/bash
# count_em - count files in all subdirectories under current directory.
echo 'echo $(ls -a "$1" | wc -l) $1' >/tmp/count_em_$$
chmod 700 /tmp/count_em_$$
find . -mount -type d -print0 | xargs -0 -n1 /tmp/count_em_$$ | sort -n
rm -f /tmp/count_em_$$

Wat het volgende resultaat geeft:

En hier zijn de boosdoeners!

En hier zijn de boosdoeners!

Het nummer dat aan de linkerkant verschijnt, geeft het aantal aanwezige bestanden aan en het pad geeft de bijbehorende map aan, een regel hieronder verschijnt de map / var / lib / dpkg / info maar zoals altijd verwijder ik mijn pakketten hier, er is niets te doen .

Als ik echter twee problemen herken, de eerste en hoewel het in de catpura niet omhoog gaat, bevatten verschillende andere items de pictogrammen awoken, dus ik moet ze ja of ja verplaatsen, ook dat verklaart ook waarom ik, toen ik dat deed, de pakketten kon updaten, aangezien ik veel inodes van de rootpartitie bevrijdde toen ik ze verplaatste, maar het probleem keerde terug toen ik ze verplaatste.

En ten tweede wordt het volgende grotere aantal vermeldingen geassocieerd met de kopteksten van verschillende oude kernels, en ik realiseer me dat de procedure die ik altijd gebruik om de oude kernels te verwijderen de kopteksten niet elimineert, wat ik meestal gebruik is het volgende, in een terminal die ik schrijf :

dpkg --get-selecties | grep linux-afbeelding

kernels-rec

die me de geïnstalleerde kernels laat zien en dan gebruik ik:

sudo apt-get purge-pakket

Waarbij pakket de naam is van de kernel in kwestie, maar dit verwijdert niet de bijbehorende headers, dus doe ik een:

dpkg --get-selecties | grep linux

oude headers

En dan ga ik verder met het verwijderen van de oude headers, met:

sudo apt-get purge linux-headers-3.2.0-41 linux-headers-3.2.0-44 linux-headers-3.2.0-45 linux-headers-3.2.0-48

En voilà, maar er was natuurlijk ook de kwestie van iconen awoken dus ik besluit ze naar ~ / .icons te verplaatsen en ze beschikbaar te maken voor het hele systeem.Ik maak gewoon een symbolische link in / usr / share / icons, het eerste resultaat van df-ik Het is met de eliminatie van de headers en de tweede nadat de pictogrammen zijn verplaatst.

Inodes vrijgegeven door de hoop!

Inodes vrijgegeven door de hoop!

Hiermee is het probleem opgelost en kan ik zonder problemen pakketten installeren / bijwerken, ik hoop dat dit bericht iemand zal helpen, of dient voor toekomstige referentie over installaties in kleine partities en het onderwerp ontraadselt dat door de forums van het gebrek wordt verspreid Van ruimte.


Laat je reactie achter

Uw e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd met *

*

*

  1. Verantwoordelijk voor de gegevens: Miguel Ángel Gatón
  2. Doel van de gegevens: Controle SPAM, commentaarbeheer.
  3. Legitimatie: uw toestemming
  4. Mededeling van de gegevens: De gegevens worden niet aan derden meegedeeld, behalve op grond van wettelijke verplichting.
  5. Gegevensopslag: database gehost door Occentus Networks (EU)
  6. Rechten: u kunt uw gegevens op elk moment beperken, herstellen en verwijderen.

  1.   Ferdinand Baptist zei

    Hallo, gebruik ubuntu tweak ( http://ubuntu-tweak.com ) is als tuneup voor Windows, het helpt je om veel rotzooi te verwijderen en tijdens het proces verwijdert het de oude kernels veilig, maar het laat een eerdere kernel achter om op te starten, in sommige gevallen werkte de laatste kernel niet voor mij en ben ik erin geslaagd om het systeem binnen te gaan, bedankt om ze niet allemaal te verwijderen.

    1.    Rayonant zei

      Ik ken hem al heel lang, maar ik heb er altijd de voorkeur aan gegeven om het op mijn manier te doen en te begrijpen hoe de dingen werken, in ieder geval, zelfs zonder het paar oude kopteksten dat het probleem had, zou het hetzelfde in min of meer tijd hebben gepresenteerd. Pictogramthema's, en dat het uiteindelijk, zoals ik al zei, GEEN probleem is van ruimtegebrek maar van gebruikte inodes.

  2.   Mauricio zei

    Bedankt voor het delen. Tot dusver heb ik dat probleem niet gehad, aangezien de schijven die ik gebruik allemaal in Linux-formaat zijn, geen vensters, aangezien ik dat systeem niet op mijn computer heb.

    Dus dit zal ik in gedachten houden, voor het geval ik op een dag dit probleem zou tegenkomen.

    1.    Rayonant zei

      Het probleem komt niet van het hebben van partities met Windows (het is gewoon een bijzonderheid van mijn geval) maar van het hebben van kleine rootpartities, minder dan 10 Gb waarbij het installatieprogramma de standaardopties van mke2fs gebruikt (dat is degene die de partities formatteert) en je vertrekt het met een klein aantal inodes voor zijn grootte, en zoals gewoonlijk bijna de norm is, zijn al onze partities in EXT4 die dit aantal instelt wanneer het wordt gemaakt en het is niet mogelijk om het later te wijzigen.

  3.   gerard H zei

    Zoals je kunt zien, is dit het soort ding dat mensen weghoudt van Linux en ze uiteindelijk teruggaan naar Windows, hoe denk je dat een gewone gebruiker in deze situatie het probleem kan oplossen?
    u hoeft geen tijd te verspillen aan het repareren en configureren van dit soort dingen en verspilt geen productieve tijd.
    Miguel de Icaza had gelijk met wat hij zei en daarom besloot hij over te schakelen naar Mac, want daar WERKT ALLES, punt uit.

    1.    levendig zei

      Dat is het. In OS X werkt alles prachtig .. Het heeft geen zin om op dit moment uit te leggen waarom wat de auteur van de postcommentaar is gebeurd, dus voer deze reactie alsjeblieft niet in. Het zal eindigen in vlammen.

      1.    eliotime3000 zei

        In mijn geval werkt Debian alles op mijn pc en het blijkt dat ik de dvd heb gebruikt als een extra opslagplaats om te upgraden van Squeeze naar Wheezy. Zodat iedereen kan updaten.

    2.    fabian zei

      Welnu, je hebt de geest van een Windows-gebruiker.
      GNU / Linux is groot voor jou.
      groeten

  4.   sieg84 zei

    dit is interessant.

  5.   Jorge zei

    Deze fout komt zeer vaak voor bij het installeren van gentoo op kleine schijven, dus veel kleine bronbestanden en de partitie heeft geen inodes meer, zelfs als er 60% vrije ruimte over is. Het handboek lost het tenminste op door mke2fs -j -T small / dev / sdaX te typen, het draait waarschijnlijk op ubuntu. Voordat ik rare instellingen speel 😛

    1.    Rayonant zei

      Precies, zoals ik al eerder zei, kun je een inode-byteverhouding specificeren met de optie -i, maar er is ook de optie die je noemt -T gebruikt een van de standaardmodi in het configuratiebestand met de naam /etc/mke2fs.conf, in in dit geval past klein een blokgrootte = 1024, inodegrootte = 128 en een byte-inodverhouding = 4096 toe.

  6.   msx zei

    Uitstekend!
    Het is het typische probleem dat je lange tijd opeet totdat je beseft waar het vandaan komt.
    +10 voor de uitleg 😀

    1.    Rayonant zei

      Zoals je zegt, je hebt een goede tijd gehad met het doden van mijn hoofd! Heel erg bedankt voor de opmerking, afkomstig van iemand die net zoveel weet als jij, is een eer!

  7.   Antonio zei

    Uitstekend !!, ik heb iets anders geleerd, en het heeft me geholpen om ongeveer 19 MB te herstellen door een oude header te verwijderen en enkele inodes te herstellen. Nu heb ik meer ruimte om te installeren. Aangezien ik nogal een beginneling van Linux ben, raad ik je aan om, als je denkt dat het goed is, een bericht te plaatsen over hoe je moet formatteren om het grootste aantal inodes te krijgen en of dit kan worden gedaan met behoud van de schijfinformatie of niet.
    Een groet en dank

    1.    Rayonant zei

      Zoals ik al vermeldde in een indicatie aan het begin van het item, is het een zeer zeldzaam probleem en wordt het geassocieerd met kleine rootpartities (<10GB), zoals mijn geval is, bij andere formaten is het onwaarschijnlijk dat het voorkomt. Nu, met betrekking tot de wijziging van het aantal inodes, zoals ik ook vermeldde in het item, is het niet mogelijk om dit te doen zonder te formatteren in partities van het type EXT4, dus je kon de informatie niet op de schijf bewaren zonder een eerdere back-up te hebben gemaakt, om de byteverhouding te wijzigen inodes gebruiken de optie -i in het mke2fs-commando of een van de opties geassocieerd met -T (klein, groot, enorm enz.).

  8.   Mario zei

    Uitstekend! De uiteenzetting van het probleem, de uitleg waarom het is gebeurd, de fundamenten en de stappen van de oplossing! Ik noem dit een uitstekende bijdrage! Bedankt Rayonant!

  9.   Diana Bedoja zei

    Bedankt voor het artikel, het heeft me veel geholpen. Ik had alles geprobeerd om deze fout te verhelpen en door de oude headers en hun afhankelijkheden met aptitude te verwijderen, kon ik programma's opnieuw installeren en updates uitvoeren. Dank je!

  10.   Jasco zei

    Hetzelfde probleem is mij overkomen, er is niets gebeurd, en het heeft me op zijn kop gezet hahaha. In mijn geval had de rootpartitie nogal wat vrij geheugen, maar het werd met 100% inodes gebruikt! Het punt is dat als je dezelfde distributie al heel lang gebruikt en na verloop van tijd geen oude kernel verwijdert, de achterstand verschrikkelijk is. In mijn geval was ik in staat om het probleem op een vergelijkbare manier op te lossen als hoe je het uitdrukte, alleen dat sudo apt-get remove of purge werkte niet voor mij en de sleutel om die niet meer gebruikte kernelbestanden te kunnen verwijderen was om sudo dpkg –remove en –purge te gebruiken, en een voor een kon ik inodes vrijgeven. Alles wat je leert. Ik wou dat ik dit bericht eerder had gevonden, want het zou de zaak eerder hebben opgelost. Bedankt dat je een beetje hebt geschetst wat dat is van inodes, ik had niet veel idee.
    Geweldige blog, groeten!

  11.   Leeuw zei

    Je bent een groso en hoewel het omslachtig is, wordt het redelijk goed begrepen. Ik heb alles tot op de letter gedaan, maar wat ik niet kan, is de vorige linux-headers verwijderen, het laat me niet toe, het zet me
    E: dpkg werd onderbroken, u moet handmatig "sudo dpkg –configure -a" uitvoeren om het probleem op te lossen
    Ik voer uit wat het me vertelt en het maakt me
    Instellen van openshot (1.4.0-1ubuntu1) ...
    Hertraceren (meest recente oproep als laatste)
    Bestand "/ usr / sbin / update-python-modules", regel 478, in
    package.install (py_installed)
    Bestand "/ usr / sbin / update-python-modules", regel 112, in install
    os.symlink (bestandsnaam, bestemmingspad)
    OSError: [Errno 2] Bestand of directory bestaat niet
    Fout in sys.excepthook:
    Hertraceren (meest recente oproep als laatste)
    Bestand "/usr/lib/python2.7/dist-packages/apport_python_hook.py", regel 128, in apport_excepthook
    os.O_WRONLY | os.O_CREAT | os.O_EXCL, 0o640), 'w')
    OSError: [Errno 28] Geen ruimte meer op apparaat: '/var/crash/_usr_sbin_update-python-modules.0.crash'

    Oorspronkelijke uitzondering was:
    Hertraceren (meest recente oproep als laatste)
    Bestand "/ usr / sbin / update-python-modules", regel 478, in
    package.install (py_installed)
    Bestand "/ usr / sbin / update-python-modules", regel 112, in install
    os.symlink (bestandsnaam, bestemmingspad)
    OSError: [Errno 2] Bestand of directory bestaat niet
    dpkg: fout bij het verwerken van openshot (–configuratie):
    de thread die het post-installatiescript installeerde, retourneerde fout afsluitcode 1
    dpkg: error: kon '/ var / lib / dpkg / status' niet openen om de databasestatus te schrijven: geen ruimte meer op het apparaat
    De vraag is: wat heb ik aan?

  12.   PABLO zei

    Heel erg bedankt! Dit bericht heeft me veel geholpen.

  13.   pijnscheut zei

    Ole!!!

    Je lost niet alleen een lastig probleem op, maar ik leer gaandeweg (en geniet ervan)

  14.   Juan Carlos zei

    Hoi. Allereerst bedankt voor de post ...

    Ten tweede heeft het me helaas niet geholpen. Ik kwam naar hem toe vanwege een probleem van een kapot pakket, dat het systeem me niet toestaat om dit op te lossen vanwege ruimtegebrek, wat in werkelijkheid de knooppunten i waren van wat hier werd uitgelegd.

    Dus ik probeerde de oude kernels te verwijderen, zoals voorgesteld, maar het systeem laat me niet:
    juan @ juan-P29G: ~ $ sudo apt-get purge linux-image-3.2.0-29-generiek-pae
    Pakketlijst lezen ... Klaar
    Afhankelijkheidsboom maken
    De statusinformatie lezen ... Klaar
    Misschien wilt u "apt-get -f install" uitvoeren om het te corrigeren:
    De volgende pakketten hebben niet-vervulde afhankelijkheden:
    tzdata-java: Afhankelijk van: tzdata (= 2014i-0ubuntu0.12.04) maar 2014e-0ubuntu0.12.04 wordt geïnstalleerd
    E: Afhankelijkheden niet gehaald. Probeer "apt-get -f install" zonder pakketten (of specificeer een oplossing).

    En als ik het advies van het systeem volg:
    juan @ juan-P29G: ~ $ sudo apt-get -f install
    Pakketlijst lezen ... Klaar
    Afhankelijkheidsboom maken
    De statusinformatie lezen ... Klaar
    Afhankelijkheden corrigeren ... Klaar
    De volgende extra pakketten worden geïnstalleerd:
    tzdata
    De volgende pakketten worden bijgewerkt:
    tzdata
    1 bijgewerkt, 0 wordt geïnstalleerd, 0 wordt verwijderd en 23 niet bijgewerkt.
    1 niet volledig geïnstalleerd of verwijderd.
    0 B / 461 kB aan bestanden moeten worden gedownload.
    Na deze operatie wordt 31,7 kB vrijgegeven.
    Wilt u doorgaan [J / n]? s
    Pakketten vooraf configureren ...
    (De database lezen ... 893468 bestanden of mappen die momenteel zijn geïnstalleerd.)
    Voorbereiden om tzdata 2014e-0ubuntu0.12.04 te vervangen (met ... / tzdata_2014i-0ubuntu0.12.04_all.deb) ...
    De vervanging van de tzdata uitpakken ...
    dpkg: fout bij het verwerken van /var/cache/apt/archives/tzdata_2014i-0ubuntu0.12.04_all.deb (-uitpakken):
    Kan geen back-up maken van symlink voor `./usr/share/zoneinfo/posix/America/Santo_Domingo ': geen ruimte meer op apparaat
    Er is geen "apport" -rapport geschreven omdat het foutbericht aangeeft dat de fout schijf vol is
    Er zijn fouten opgetreden tijdens het verwerken:
    /var/cache/apt/archives/tzdata_2014i-0ubuntu0.12.04_all.deb
    E: Sub-process / usr / bin / dpkg teruggekeerd een foutcode (1)

    Een vicieuze cirkel ... Hoe dan ook, ik zal zien wat ik kan doen.

    Groeten.

  15.   Juan Carlos zei

    Nogmaals hallo ... ik weet hoe ik de vicieuze cirkel moet doorbreken.

    Ik zal de afbeelding van de oudste van de kernels verwijderen met deze opdracht:
    sudo dpkg - linux-image-3.2.0-29-generiek-pae verwijderen

    Daarmee krijg ik 4389 i-nodes, genoeg om het kapotte pakket te repareren, en dan verwijder ik de oudere kernel headers zoals aangegeven in de post.

    En nu zal ik meer i-nodes herstellen door een aantal oude kernels te verwijderen ...

    Bedankt en groeten, Juan Carlos.

  16.   anoniem zei

    Hij liet me de kopteksten niet verwijderen

    Ik heb getypt
    sudo nautilus

    En ik ben naar de map / usr / src gegaan
    Daar heb ik de "headers" -bestanden gezien en ik heb ze verwijderd
    Daarmee heeft hij me al de autoremove-bestelling laten plaatsen

  17.   anoniem zei

    Dank je!! de post is misschien een beetje oud, maar het is nog steeds erg handig, probleem opgelost met inodes

  18.   Luis zei

    Rayonant: een voorbeeldige verklaring.
    Hoewel ik in mijn geval de partitie moest uitbreiden (met Gparted), heeft je bericht me geholpen het probleem te begrijpen. En na het volgen van uw methode, ben ik van 90% bezette inodes gegaan (na de partitie te hebben uitgebreid), naar slechts 28%.
    Heel erg bedankt. Ik zal het vanaf nu gebruiken om de oude kernels (en headers) te verwijderen.
    Dank ook aan Juan Carlos (ik had hetzelfde probleem).
    Een knuffel.

  19.   Hilarisch zei

    Interessante post,
    In mijn geval ben ik gedaald van 100% gebruik naar 9%

    root @ pi: / home / pi # apt-get clean
    root @ pi: / home / pi # df -i
    S. bestanden Nodes-i NUsados ​​NLibres NUso% Gemonteerd op
    / dev / root 1915424 1915288% /

    later ontdekte ik dat de ntopng-stormen mijn neus raakten, ik elimineerde ze en ...

    root @ pi: / home / pi # rm -rf / var / tmp / ntopng /

    Tachán !!!

    root @ pi: / # df -i
    S. bestanden Nodes-i NUsados ​​NLibres NUso% Gemonteerd op
    / dev / root 1915424 160408 1755016 9% /

    Bedankt