Ažuriranje / instaliranje paketa nije uspjelo - Problemi s prostorom - Oslobodite inode

Prije svega komentirajte da je ovo posebna greška zbog karakteristika moje korijenske particije i da se to obično ne događa u tipičnim instalacijama 

Za početak ću spomenuti istoriju kako se problem dogodio, a zatim kako ga riješiti.

Moj tim je Netbook Sony Vaio m120AL da imam otprilike 3 duge godine sa 320 GB hard diska na kojem oni koegzistiraju Windows 7, Chakra , moja radna particija sa Ubuntu 12.04, swap particiju, / home home i particiju dodatnih informacija s kojom dijelim informacije Windows

Iz tih razloga moje root particije na oba sistema su prema većini standarda znatno male (oko 6 GB svaka), ali nikad mi nisu stvarale problem jer su više nego dovoljne za sve pakete koje trebam.

Sada, ulazeći u specifičnu situaciju, prije nekoliko dana primijenili smo neke ispravke u Xubuntu (koji je uključivao novi kernel) Vidim da upravitelj ažuriranja prikazuje grešku govoreći da pokušava instalirati linux-image-3.2.0-51-generic, ali da njegova ovisnost linux-headers-3.2.0-51 neće biti instaliran, detaljno pregledam grešku i primjećujem da se dpkg žali da nema slobodnog prostora.

Pogreška govori nešto o ovom stilu, iako nije identična jer je nisam zapisao:

nije mogao stvoriti `/usr/src/linux-headers-3.2.0-43/arch/xtensa/include/asm/coprocessor.h.dpkg-new '(tokom obrade` ./usr/src/linux-headers -3.2.0 .43-XNUMX / arch / xtensa / include / asm / coprocessor.h '): Na uređaju nije preostalo prostora

Jednom mi se prethodnom prilikom dogodila ista stvar, ali to je bilo zato što sam dozvolio da se nakupi nekoliko starih kernela, a da ih nisam izbrisao, ali ovaj put provjeravam i imam praktično 600 Mb na raspolaganju prema Conky iz onoga što ne razumijem, ali da bih potvrdio da li je možda greška u načinu na koji sam ga konfigurirao ili slično, pokrećem a df -h:

df -h

Ali još uvijek imam prostora u /!

Dakle, ne varam se i to je više nego dovoljno prostora za izvođenje nadogradnje (to sam učinio mnogo puta u dugoj godini otkako radim s Xubuntuom) svejedno radim sudo apt-očisti se očistiti pakete koje sam preuzeo i pokušati ponovo, ali sa istim rezultatima.

I dalje mi je čudno, ali u svakom slučaju pokušavam se maknuti iz / tema ikona koje uvijek koristim i koje sam puno izmijenio (faenza y Probudio se) kako biste oslobodili više prostora i tako konačno uspjeli izvršiti ažuriranje, nastavljajući ponovno s vraćanjem na /.

Međutim, u glavi mi je ostala ideja da stvar mora ići negdje drugdje, ali nisam znala koja. Nekoliko sati kasnije, kada pokušam instalirati neke dodatne pakete, ponovo dobijem spomenutu grešku i opet je bilo dovoljno prostora, pa se posvećujem istraživanju.

Internet pretraga vodi me do nekoliko tema na forumima ubuntu-je, ali odgovor nekih pojedinaca je uvijek isti: nemate dovoljno prostora za brisanje datoteka ili proširenje korijenske particije, ali primijetio sam nešto zajedničko u različitim nitima koje sam pronašao, uvijek korijenska particija koja je imala slobodnog prostora, ali bio je sličan mojem (~ 600-900 Mb) i veličina particije nikada nije prelazila 10 Gb, tako da sam se završio uvjeravao da problem mora biti drugi, i ovako sam došao do naslova posta zahvaljujući esta stranici, problem je u tome što je korijenska particija imala 100% korištenih inoda.

Korištenje inoda može se vidjeti pomoću naredbe df -i:

100% korišteni inodi

100% korišteni inodi

A sad dolazi objašnjenje.

Inodi su u riječi Dennisa Ritchieja:

Indeks zbog pomalo neobične strukture datotečnog sistema koji je podatke o pristupu datotekama pohranio kao ravnu listu na disku, ostavljajući po strani sve hijerarhijske informacije direktorija

i stoga se može dogoditi da za zadati sistem datoteka još uvijek ima slobodnog prostora za pohranu datoteka, ali nema dostupnih inoda za njihovo indeksiranje, jer u sistemu ima mnogo datoteka, pa se stoga ne mogu stvoriti nove.

Poanta je u tome da je broj inoda u particiji EXT4 ne može se modificirati (postoje druge vrste sistema kao što su JFX o XFS gdje ovo nije ograničenje jer je dinamično) to je fiksni broj koji se izračunava kada se particija kreira pomoću mkfs.ext4 prema svojoj veličini s omjerom bajtova po inodu prema preferencijama smještenim u /etc/mke2fs.conf.

Prilikom instaliranja sistema, uobičajeno je koristiti zadane postavke koje uključuju relaciju inode = 16384, koja bi za male particije mogla biti prevelika i ne bi stvorila dovoljno (kao u mom slučaju). Jedini način da ga promijenite je stvaranje / formatiranje particije i specificiranje s opcijom -i.

Međutim, ovo za mene nije bila opcija, jer sam već spomenuo da su inodi povezani s brojem postojećih datoteka, pa koristite sljedeću bash skriptu koja se nalazi u stackoverflow i da je povezan sa stranicom koju ste prije spomenuli kako biste pronašli koji su direktoriji u korijenskoj particiji s više datoteka:

važno je znati da skripta analizira direktorij odakle se zove, to jest, kao što je u mom slučaju bila zainteresirana za analizu / Pa, prvo u terminalu s kojim se moram kretati cd / a zatim ako treba pozvati skriptu
#!/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_$$

Što daje sljedeći rezultat:

I tu su krivci!

I tu su krivci!

Broj koji se pojavljuje s lijeve strane označava broj prisutnih datoteka, a put označava pridruženi direktorij, u jednom retku ispod pojavljuje se direktorij / var / lib / dpkg / info, ali kao i uvijek ovdje očistim svoje pakete, nema što raditi.

Međutim, ako prepoznam dva problema, prvi i premda se catpura ne pojavljuje odatle, još nekoliko unosa uključuje ikone Probudio se, tako da ih moram premjestiti da ili da, osim toga objašnjava zašto sam, kad sam to učinio, mogao ažurirati pakete, jer sam oslobodio mnoge inode s korijenske particije kada sam ih premjestio, ali problem se vratio kad sam ih premjestio.

I drugo, sljedeći najveći broj unosa povezan je sa zaglavljima nekoliko starih jezgri, i shvaćam da postupak koji uvijek koristim za uklanjanje starih jezgri ne uklanja zaglavlja, ono što obično koristim je sljedeće, u terminal pišem:

dpkg --get-selections | grep linux-slika

kernel-rec

što mi pokazuje instalirane kernele, a zatim koristim:

sudo apt-get paket za pročišćavanje

Gdje je paket ime dotičnog jezgra, ali ovo ne uklanja pridružena zaglavlja, pa radim:

dpkg --get-selections | grep linux

stara zaglavlja

A onda nastavljam s uklanjanjem starih zaglavlja, sa:

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

I voilà, ali naravno tu je bilo i pitanje ikona Probudio se pa sam ih odlučio premjestiti na ~ / .icons i učiniti ih dostupnima za cijeli sistem, samo napravim simboličku vezu u / usr / share / icons, prvi rezultat df -i To je s uklanjanjem zaglavlja i drugo nakon premještanja ikona.

Inode koje je pustila gomila!

Inode koje je pustila gomila!

Ovim je problem riješen, a pakete mogu instalirati / ažurirati bez problema, nadam se da će ovaj post nekome pomoći ili poslužiti za buduću referencu o instalacijama u malim particijama i demistificirati temu koju su forumi tako širili zbog nedostatka Svemira.


27 komentara, ostavi svoj

Ostavite komentar

Vaša e-mail adresa neće biti objavljena. Obavezna polja su označena sa *

*

*

  1. Za podatke odgovoran: Miguel Ángel Gatón
  2. Svrha podataka: Kontrola neželjene pošte, upravljanje komentarima.
  3. Legitimacija: Vaš pristanak
  4. Komunikacija podataka: Podaci se neće dostavljati trećim stranama, osim po zakonskoj obavezi.
  5. Pohrana podataka: Baza podataka koju hostuje Occentus Networks (EU)
  6. Prava: U bilo kojem trenutku možete ograničiti, oporaviti i izbrisati svoje podatke.

  1.   Ferdinand Baptist rekao je

    Zdravo, koristi ubuntu podešavanje ( http://ubuntu-tweak.com ) je poput podešavanja za Windows, pomaže vam ukloniti puno smeća i u tom procesu deinstalira stara jezgra na siguran način, međutim, ostavlja prethodni kernel za pokretanje, u nekim prilikama zadnji kernel mi nije radio i uspio sam za ulazak u sistem zahvaljujući tome što ih ne brišete sve.

    1.    Rayonant rekao je

      Poznajem ga već dugo, ali uvijek sam radije to radio na svoj način i razumio način na koji stvari funkcioniraju, u svakom slučaju, čak i bez para starih zaglavlja koji su imali problema, to bi isto predstavljalo manje-više time so Icon teme, i da na kraju, kao što sam spomenuo, NIJE problem nedostatka prostora već korištenih inoda.

  2.   Maurice rekao je

    Hvala vam što ste ovo podijelili. Do sada nisam imao taj problem, jer su diskovi koje koristim svi u Linux formatu, bez prozora, jer taj sistem nemam na računaru.

    Dakle, imaću ovo na umu, u slučaju da jednog dana dođem vidjeti ovaj problem.

    1.    Rayonant rekao je

      Problem ne dolazi s particijama sa Windowsom (to je samo osobenost mog slučaja), već s malim root particijama, manjim od 10Gb, gdje instalacijski program koristi zadane opcije mke2fs (koja je ta koja formatira particije) i vi Ostavlja se s malim brojem inoda zbog svoje veličine i da je, kao što je to obično gotovo norma, sve naše particije u EXT4 koji postavlja ovaj broj kada se kreira i nije ga moguće kasnije mijenjati.

  3.   gerard H rekao je

    Kao što vidite, ovo je ono što ljude drži podalje od linuxa i na kraju se vraćaju u Windows. Kako mislite da uobičajeni korisnik u ovoj situaciji može riješiti problem?
    ne morate gubiti vrijeme popravljajući i konfigurirajući takve stvari i gubeći produktivno vrijeme.
    Miguel de Icaza je bio u pravu s onim što je rekao i zato je odlučio prebaciti se na Mac jer SVE TAKO RADI, tačka.

    1.    živahno rekao je

      To je to. U OS X-u sve funkcionira lijepo. U ovom trenutku je beskorisno objašnjavati zašto se dogodio ono što je napisao autor komentara, pa molim vas, nemojte hraniti ovaj komentar. Završit će u plamenu.

      1.    eliotime3000 rekao je

        U mom slučaju, Debian radi sve na mom računaru i ispostavilo se da sam DVD koristio kao dodatni repo za nadogradnju sa Squeeze na Wheezy. Tako da svako može ažurirati.

    2.    fabian rekao je

      Pa, onda imate pamet korisnika Windows-a.
      GNU / Linux je velik za vas.
      pozdravi

  4.   sieg84 rekao je

    ovo je zanimljivo.

  5.   Jorge rekao je

    Ova greška je vrlo česta kada instalirate gentoo na male diskove, pa toliko malih izvornih datoteka i particije ostane bez inoda, čak i ako ostane 60% slobodnog prostora. Barem priručnik to rješava upisivanjem mke2fs -j -T small / dev / sdaX, vjerovatno radi na ubuntuu. Prije igranja čudnih postavki 😛

    1.    Rayonant rekao je

      Tačno, kao što sam već spomenuo, možete odrediti odnos bajtova inode pomoću opcije -i, ali postoji i opcija koju spominjete -T koristi jedan od zadanih načina u konfiguracijskoj datoteci koji nosi ime /etc/mke2fs.conf, u u ovom slučaju mali će primijeniti veličinu bloka = 1024, veličinu inoda = 128 i omjer bajta-inoda = 4096.

  6.   MSX rekao je

    Excelente!
    To je tipičan problem koji vam dugo jede glavu dok ne shvatite odakle je potekla.
    +10 za objašnjenje 😀

    1.    Rayonant rekao je

      Kao što kažete, dobro ste se proveli ubivši mi glavu! Hvala vam puno na komentaru koji je stigao od nekoga ko toliko zna koliko ste vi čast!

  7.   Antonio rekao je

    Izvrsno !!, naučio sam još nešto i pomoglo mi je da oporavim oko 19Mb uklanjanjem starog zaglavlja, kao i oporavkom nekih inoda. Sada imam više prostora za instalaciju. Budući da sam prilično početnik u Linuxu, ako mislite da je u redu, potičem vas da objavite post o tome kako formatirati da biste dobili najveći broj inoda i može li se to učiniti zadržavajući podatke o disku ili ne.
    Pozdrav i zahvalnost

    1.    Rayonant rekao je

      Kao što sam spomenuo u indikaciji na početku unosa, to je vrlo rijedak problem i povezan je s malim korijenskim particijama (<10 GB), kao što je to moj slučaj, kod drugih veličina je malo vjerojatno da će se dogoditi. Što se tiče promjene broja inoda, kao što sam također spomenuo u unosu, to nije moguće učiniti bez formatiranja u particijama tipa EXT4, tako da niste mogli zadržati informacije na disku bez prethodne sigurnosne kopije za promjenu odnosa bajtova inodi koriste opciju -i u naredbi mke2fs ili jednu od opcija povezanih s -T (mala, velika, velika itd.).

  8.   Mario rekao je

    Odlicno! Izlaganje problema, objašnjenje zašto se to dogodilo, njegovi temelji i koraci rješenja! Ovo nazivam izvrsnim doprinosom! Hvala Rayonant!

  9.   Diana Bedoya rekao je

    Hvala na članku, puno mi je pomogao. Pokušao sam sve da prebrodim ovu grešku i uklanjanjem starih zaglavlja i njihovih zavisnosti sa sposobnošću uspio sam ponovo instalirati programe i obaviti ažuriranja. Hvala ti!

  10.   Jasco rekao je

    Isti problem mi se dogodio, ne čini ništa, i doveo me do glave hahaha. U mom slučaju, korijenska particija imala je prilično slobodne memorije, ali bila je sa 100% korištenih inoda! Poanta je u tome da, ako već dugo koristite istu distribuciju i ne uklonite stare jezgre s vremenom, zaostatak je strašan. U mom slučaju uspio sam riješiti problem na sličan način na koji ste ga vi postavili, samo što mi sudo apt-get remove ili purge nije radio, a ključ za uklanjanje tih korištenih datoteka kernela bio je korištenje sudo dpkg –ukloni i –pročisti, i jedan po jedan uspio sam osloboditi inode. Sve što naučite. Volio bih da sam ovaj zapis pronašao ranije, jer bi to stvar prije riješio. Hvala što ste malo skicirali što je to s inodima, nisam imao previše pojma.
    Odličan blog, pozdrav!

  11.   Lav rekao je

    Vi ste groso i iako je glomazan to se prilično dobro razumije. Sve sam učinio do slova, ali ono što ne mogu je ukloniti prethodna zaglavlja linux-a, ne dopušta mi, postavlja me
    E: dpkg je prekinut, morate ručno pokrenuti "sudo dpkg –configure -a" da biste riješili problem
    Izvršim ono što mi kaže i učini me
    Postavljanje openshot-a (1.4.0-1ubuntu1) ...
    Traceback (najnoviji zadnji poziv):
    Datoteka "/ usr / sbin / update-python-modules", red 478, u
    package.install (py_installed)
    Datoteka "/ usr / sbin / update-python-modules", red 112, u instalaciji
    os.symlink (ime datoteke, destpath)
    OSError: [Errno 2] Nema takve datoteke ili direktorija
    Greška u sys.excepthook:
    Traceback (najnoviji zadnji poziv):
    Datoteka "/usr/lib/python2.7/dist-packages/apport_python_hook.py", red 128, u apport_excepthook
    os.O_WRONLY | os.O_CREAT | os.O_EXCL, 0o640), 'w')
    OSError: [Errno 28] Nema više prostora na uređaju: '/var/crash/_usr_sbin_update-python-modules.0.crash'

    Izvorni izuzetak bio je:
    Traceback (najnoviji zadnji poziv):
    Datoteka "/ usr / sbin / update-python-modules", red 478, u
    package.install (py_installed)
    Datoteka "/ usr / sbin / update-python-modules", red 112, u instalaciji
    os.symlink (ime datoteke, destpath)
    OSError: [Errno 2] Nema takve datoteke ili direktorija
    dpkg: obrada greške openshot (–konfiguracija):
    nit je instalirao skriptu nakon instalacije vratio je izlazni kod greške 1
    dpkg: greška: nije uspjelo otvoriti `/ var / lib / dpkg / status 'za pisanje statusa baze podataka: Na uređaju nije preostalo prostora
    Pitanje je, šta sam obukao?

  12.   Pablo rekao je

    Hvala puno! Ovaj post mi je puno pomogao.

  13.   pang rekao je

    Hej!!!

    Ne samo da rješavate škakljiv problem, već usput učim (i uživam)

  14.   Juan Carlos rekao je

    Zdravo. Prije svega, hvala na postu ...

    Drugo, nažalost, nije mi pomoglo. Došao sam mu zbog problema s pokvarenim paketom, što mi sistem ne dopušta da riješim zbog nedostatka prostora, što je u stvarnosti od onoga što je ovdje objašnjeno bili čvorovi i.

    Pokušao sam očistiti stare kernele, kako je predloženo, ali sistem mi to ne dopušta:
    juan @ juan-P29G: ~ $ sudo apt-get purge linux-image-3.2.0-29-generic-pae
    Čitanje liste paketa ... Gotovo
    Stvaranje stabla zavisnosti
    Čitanje informacija o statusu ... Gotovo
    Možda biste trebali pokrenuti "apt-get -f install" da biste je ispravili:
    Sljedeći paketi imaju neispunjene zavisnosti:
    tzdata-java: Ovisi: tzdata (= 2014i-0ubuntu0.12.04), ali 2014e-0ubuntu0.12.04 će biti instaliran
    E: Zavisnosti nisu ispunjene. Pokušajte "apt-get -f install" bez paketa (ili navedite rješenje).

    I kad slijedim savjete sistema:
    juan @ juan-P29G: ~ $ sudo apt-get -f instalacija
    Čitanje liste paketa ... Gotovo
    Stvaranje stabla zavisnosti
    Čitanje informacija o statusu ... Gotovo
    Ispravljanje zavisnosti ... Gotovo
    Sljedeći dodatni paketi će biti instalirani:
    tzdata
    Ažurirat će se sljedeći paketi:
    tzdata
    1 ažurirano, 0 će biti instalirano, 0 za uklanjanje, a 23 nije ažurirano.
    1 nije u potpunosti instaliran ili uklonjen.
    Potrebno je preuzeti 0 B / 461 kB datoteka.
    Nakon ove operacije bit će objavljeno 31,7 kB.
    Želite li nastaviti [DA / N]? s
    Pretkonfiguracija paketa ...
    (Čitanje baze podataka ... 893468 datoteka ili direktorija koji su trenutno instalirani.)
    Priprema za zamjenu tzdata 2014e-0ubuntu0.12.04 (koristeći… / tzdata_2014i-0ubuntu0.12.04_all.deb)…
    Raspakivanje zamjene za tzdata ...
    dpkg: obrada greške /var/cache/apt/archives/tzdata_2014i-0ubuntu0.12.04_all.deb (–unpack):
    ne može napraviti sigurnosnu kopiju simboličke veze za `./usr/share/zoneinfo/posix/America/Santo_Domingo ': Na uređaju nema preostalog prostora
    Izvještaj "apport" nije napisan jer poruka o grešci ukazuje da je greška puna diska
    Došlo je do grešaka prilikom obrade:
    /var/cache/apt/archives/tzdata_2014i-0ubuntu0.12.04_all.deb
    E: Potproces / usr / bin / dpkg vratio je kôd greške (1)

    Začarani krug ... U svakom slučaju, vidjet ću što mogu učiniti.

    Pozdrav.

  15.   Juan Carlos rekao je

    Pozdrav ponovo ... Znam kako prekinuti začarani krug.

    Uklonit ću sliku najstarijeg jezgra ovom naredbom:
    sudo dpkg –ukloni linux-image-3.2.0-29-generic-pae

    Uz to dobivam 4389 i-čvorova, dovoljno za popravak slomljenog paketa, a zatim uklanjam zaglavlja sa starijeg jezgra kao što je naznačeno u postu.

    A sada ću oporaviti još i-čvorova uklanjanjem gomile starih jezgri ...

    Hvala i pozdrav, Juan Carlos.

  16.   Anónimo rekao je

    Nije mi dozvolio da izbrišem zaglavlja

    Ukucao sam
    sudo nautilus

    I otišao sam u direktorijum / usr / src
    Tamo sam vidio datoteke "zaglavlja" i izbrisao sam ih
    Uz to mi je već dopustio da dam nalog za automatsko uklanjanje

  17.   Anónimo rekao je

    Hvala ti!! post je možda malo star, ali je i dalje vrlo koristan, problem riješen s inodima

  18.   luis rekao je

    Rayonant: uzorno objašnjenje.
    Iako sam, u mom slučaju, morao proširiti particiju (s Gpartedom), vaš post mi je pomogao da shvatim problem. I nakon što slijedim vašu metodu, prešao sam sa 90% zauzetih inoda (nakon što sam proširio particiju) na samo 28%.
    Hvala puno. Od sada ću ga koristiti za uklanjanje starih jezgri (i zaglavlja).
    Hvala i Juan Carlosu (imao sam isti problem).
    Zagrljaj

  19.   Urnebesno rekao je

    Zanimljiv post,
    U mom slučaju smanjio sam se sa 100% na 9%

    root @ pi: / home / pi # apt-get clean
    root @ pi: / home / pi # df -i
    S. datoteke Nodes-i NUsados ​​NLibres NUso% Montirano
    / dev / root 1915424 1915288 136 100% /

    kasnije sam otkrio da mi ntopng oluje dodiruju nos, eliminirao sam ih i ...

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

    Tachán !!!

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

    Hvala