Nie udało się zaktualizować / zainstalować pakietów - Problemy z miejscem - Zwolnij i-węzły

Przede wszystkim komentarz, że jest to szczególny błąd ze względu na charakterystykę mojej partycji root i że zwykle nie ma to miejsca w typowych instalacjach 

Na początek wspomnę o historii tego, jak powstał problem, a następnie o tym, jak go rozwiązać.

Mój zespół to Netbook Sony Vaio m120AL które mam od około 3 długich lat z twardym dyskiem o pojemności 320 GB, na którym współistnieją Windows 7, Chakra , moja partycja robocza z Xubuntu 12.04, partycja wymiany, partycja / home i dodatkowa partycja informacyjna, z którą udostępniam informacje System Windows.

Z tego powodu moje partycje główne w obu systemach są znacznie mniejsze według większości standardów (około 6 GB każdy), ale nigdy nie sprawiały mi problemu, ponieważ wystarczają na wszystkie potrzebne mi pakiety.

Teraz, wchodząc w konkretną sytuację, kilka dni temu wprowadzając aktualizacje w Xubuntu (wśród których uwzględniono nowe jądro) Widzę, że menedżer aktualizacji wyświetla błąd informujący, że próbuje zainstalować linux-image-3.2.0-51-generic, ale jego zależność linux-headers-3.2.0-51 to nie zostanie zainstalowany, szczegółowo przeglądam błąd i zauważam, że dpkg narzeka, że ​​nie ma wolnego miejsca.

Błąd mówił coś o tym stylu, chociaż nie identycznym bo nie zapisałem tego:

nie można utworzyć `/usr/src/linux-headers-3.2.0-43/arch/xtensa/include/asm/coprocessor.h.dpkg-new '(podczas przetwarzania` ./usr/src/linux-headers -3.2.0 .43-XNUMX / arch / xtensa / include / asm / coprocessor.h '): Brak miejsca na urządzeniu

Przy jakiejś poprzedniej okazji to samo zdarzyło mi się, ale było tak, ponieważ pozwoliłem gromadzić się kilku starych Kerneli bez ich usuwania, ale tym razem sprawdzam i mam praktycznie 600 Mb dostępnego zgodnie z Conky z czego nie rozumiem, ale aby potwierdzić, czy może to być błąd w konfiguracji lub podobny, uruchamiam plik df -h:

df -h

Ale wciąż mam miejsce w /!

Więc się nie mylę i to więcej niż wystarczająco miejsca na wykonanie aktualizacji (robiłem to w ten sposób wiele razy w ciągu długiego roku, odkąd jestem z Xubuntu) i tak robię sudo apt-get clean wyczyścić pobrane pakiety i spróbować ponownie, ale z tymi samymi wynikami.

Nadal uważam to za dziwne, ale i tak staram się wyjść z / motywów ikon, których zawsze używam i które bardzo modyfikowałem (Faenza y Obudzony), aby zwolnić więcej miejsca, a tym samym w końcu udaje mi się zaktualizować, przechodząc ponownie, aby przywrócić je do /.

Jednak w mojej głowie pozostał pomysł, że sprawa musi iść gdzie indziej, ale nie wiedziałem o którą. Kilka godzin później, gdy próbuję zainstalować dodatkowe pakiety, ponownie pojawia się wspomniany błąd i znowu jest wystarczająco dużo wolnego miejsca, więc szukam informacji.

Wyszukiwanie w internecie prowadzi mnie do kilku wątków na forach ubuntu-is, ale odpowiedź niektórych osób jest zawsze taka sama: nie masz wystarczającej ilości miejsca, usuń pliki lub rozszerz partycję główną, ale zauważyłem coś wspólnego w różnych wątkach, które znalazłem, zawsze w partycji głównej, która miała wolne miejsce, ale był podobny do mojego (~ 600-900 Mb) i rozmiar partycji nigdy nie przekroczył 10 Gb więc skończyłem wmawiać sobie, że problem musiał być inny i tak dotarłem do tytułu wpisu dzięki esta problem polega na tym, że partycja główna miała 100% używanych i-węzłów.

Użycie i-węzłów można zobaczyć za pomocą polecenia df-i:

100% używane i-węzły

100% używane i-węzły

A teraz jest wyjaśnienie.

I-węzły są słowami Dennisa Ritchiego:

Indeks, ze względu na nieco nietypową strukturę systemu plików, który przechowywał informacje o dostępie do plików jako płaską listę na dysku, pozostawiając na boku wszystkie hierarchiczne informacje o katalogach

dlatego może się zdarzyć, że dla danego systemu plików nadal jest wolne miejsce do przechowywania plików, ale nie ma dostępnych i-węzłów do ich indeksowania, ponieważ w systemie jest wiele plików i dlatego nie można utworzyć nowych.

Chodzi o to, że liczba i-węzłów w partycji ZEW4 nie można modyfikować (istnieją inne typy systemów, takie jak JFX o XFS gdzie nie jest to ograniczenie, ponieważ jest dynamiczne) jest to stała liczba obliczana podczas tworzenia partycji za pomocą mkfs.ext4 zgodnie z jej rozmiarem ze stosunkiem bajtów na i-węzeł zgodnie z preferencjami znajdującymi się w /etc/mke2fs.conf.

Podczas instalowania systemu zwykle używa się domyślnych preferencji, które zawierają relację i-węzeł = 16384, która dla małych partycji może być zbyt duża i niewystarczająca (jak w moim przypadku). Jedynym sposobem, aby to zmienić, jest utworzenie / sformatowanie partycji i określenie jej za pomocą opcji -i.

Jednak nie była to opcja dla mnie, ponieważ już wspomniałem, że i-węzły są powiązane z liczbą istniejących plików, więc użyj następującego skryptu bash znalezionego w przepełnienie stosu i że jest on połączony na stronie, o której wspomniałeś wcześniej, aby znaleźć katalogi w partycji głównej z większą liczbą plików:

ważne, aby wiedzieć, że skrypt analizuje katalog, z którego jest wywoływany, czyli tak jak w moim przypadku byłem zainteresowany analizą / Cóż, najpierw w terminalu, z którym muszę się przenieść cd / a potem czy wywołać skrypt
#!/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_$$

Co daje następujący wynik:

A oto winowajcy!

A oto winowajcy!

Liczba, która pojawia się po lewej stronie, wskazuje liczbę obecnych plików, a ścieżka wskazuje powiązany katalog, jedna linia poniżej pojawia się katalog / var / lib / dpkg / info, ale jak zawsze wyczyszczam tutaj moje pakiety, nie ma nic do zrobienia.

Jeśli jednak rozpoznam dwa problemy to pierwszy i chociaż catpura stamtąd nie wychodzi kilka kolejnych wpisów zawiera ikonki Obudzony, więc muszę je przenieść tak lub tak, również to wyjaśnia, dlaczego kiedy to zrobiłem, mogłem zaktualizować pakiety, ponieważ zwolniłem wiele i-węzłów z partycji głównej podczas ich przenoszenia, ale problem powrócił po ich przeniesieniu.

Po drugie, następna największa liczba wpisów jest związana z nagłówkami kilku starych jąder i zdaję sobie sprawę, że procedura, której zawsze używam do eliminacji starych jąder, nie eliminuje nagłówków, co zwykle jest następujące, w terminal piszę:

dpkg --get-selections | grep obraz systemu Linux

kernel-rec

który pokazuje mi zainstalowane jądra, a następnie używam:

pakiet sudo apt-get purge

Gdzie pakiet jest nazwą jądra, o którym mowa, ale to nie usuwa powiązanych nagłówków, więc robię:

dpkg --get-selections | grep-linux

stare nagłówki

A potem przystępuję do usuwania starych nagłówków, z:

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à, ale oczywiście był też problem ikon Obudzony więc decyduję się przenieść je do ~ / .icons i udostępnić je dla całego systemu, po prostu tworzę symboliczne dowiązanie w / usr / share / icons, pierwszy wynik df-i To z eliminacją nagłówków i drugim po przesunięciu ikon.

I-węzły wypuszczone przez stertę!

I-węzły wypuszczone przez stertę!

Dzięki temu problem jest rozwiązany i mogę bez problemu zainstalować / zaktualizować pakiety, mam nadzieję, że ten post będzie komuś pomocny lub posłuży jako odniesienie w przyszłości do instalacji na małych partycjach i zdemistyfikuje temat tak rozpowszechniany przez fora o braku Przestrzeni.


Zostaw swój komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

*

*

  1. Odpowiedzialny za dane: Miguel Ángel Gatón
  2. Cel danych: kontrola spamu, zarządzanie komentarzami.
  3. Legitymacja: Twoja zgoda
  4. Przekazywanie danych: Dane nie będą przekazywane stronom trzecim, z wyjątkiem obowiązku prawnego.
  5. Przechowywanie danych: baza danych hostowana przez Occentus Networks (UE)
  6. Prawa: w dowolnym momencie możesz ograniczyć, odzyskać i usunąć swoje dane.

  1.   Ferdynand Chrzciciel powiedział

    Cześć, użyj poprawki ubuntu ( http://ubuntu-tweak.com ) To jest jak strojenie dla Windows, pomaga usunąć dużo śmieci, a przy okazji bezpiecznie odinstalowuje stare jądra, jednak zostawia poprzednie jądro do załadowania, czasami ostatnie jądro nie działało i udało mi się wejść do systemu dzięki nieusunięciu ich wszystkich.

    1.    Rayonant powiedział

      Znam go od dawna, ale zawsze wolałem robić to po swojemu i rozumieć, jak to działa, i tak, nawet bez pary starych nagłówków, z którymi był problem, prezentowałby się mniej więcej tak samo czas więc motywy ikon, a ostatecznie, jak wspomniałem, NIE jest to problem braku miejsca, ale użytych i-węzłów.

  2.   Mauritius powiedział

    Dziękuję za udostępnienie tego. Jak dotąd nie miałem tego problemu, ponieważ dyski, których używam, są w formacie Linuksa, bez okien, ponieważ nie mam tego systemu na swoim komputerze.

    Więc będę o tym pamiętać, na wypadek, gdyby któregoś dnia zobaczyłem ten problem.

    1.    Rayonant powiedział

      Problem nie wynika z posiadania partycji z systemem Windows (jest to po prostu osobliwość mojego przypadku), ale z posiadania małych partycji root, mniejszych niż 10 Gb, gdzie instalator używa domyślnych opcji mke2fs (który formatuje partycje) i pozostawia z małą liczbą i-węzłów ze względu na swój rozmiar i jak zwykle jest to prawie normalne, wszystkie nasze partycje są w EXT4, które ustawia tę liczbę podczas tworzenia i nie można jej później zmodyfikować.

  3.   gerardo H. powiedział

    Jak widać, jest to coś, co odstrasza ludzi od Linuksa i kończy się powrotem do Windows. Jak myślisz, jak zwykły użytkownik w takiej sytuacji może rozwiązać problem?
    nie musisz tracić czasu na naprawianie i konfigurowanie tego typu rzeczy i marnowanie produktywnego czasu.
    Miguel de Icaza miał rację z tym, co powiedział i dlatego zdecydował się przejść na Maca, ponieważ WSZYSTKO tam DZIAŁA, kropka.

    1.    pełen życia powiedział

      Otóż ​​to. W OS X wszystko działa pięknie .. Nie ma sensu w tym momencie tłumaczyć, dlaczego autor postu się skomentował, więc proszę nie podawać tego komentarza. Skończy się płomieniem.

      1.    Eliotime3000 powiedział

        W moim przypadku Debian działa na moim komputerze i okazuje się, że użyłem DVD jako dodatkowego repozytorium do aktualizacji z Squeeze do Wheezy. Więc każdy może aktualizować.

    2.    Fabian powiedział

      Więc masz umysł użytkownika systemu Windows.
      GNU / Linux jest dla Ciebie wielki.
      pozdrowienia

  4.   Sieg84 powiedział

    to jest interesujące.

  5.   Jorge powiedział

    Ten błąd występuje bardzo często podczas instalowania gentoo na małych dyskach, przy tak wielu małych plikach źródłowych i partycji kończy się i-węzły, nawet jeśli zostało 60% wolnego miejsca. Przynajmniej podręcznik naprawia to, wpisując mke2fs -j -T small / dev / sdaX, prawdopodobnie działa na systemie ubuntu. Zanim zagram w dziwne ustawienia 😛

    1.    Rayonant powiedział

      Dokładnie, jak wspomniałem wcześniej, możesz określić stosunek bajtów i-węzłów za pomocą opcji -i, ale jest też opcja, o której wspomniałeś -T używa jednego z domyślnych trybów w pliku konfiguracyjnym o nazwie /etc/mke2fs.conf, w w tym przypadku small zastosuje rozmiar bloku = 1024, rozmiar i-węzła = 128 i stosunek bajtów-i-węzłów = 4096.

  6.   msx powiedział

    Doskonałe!
    Jest to typowy problem, który zjada twoją głowę przez długi czas, zanim zdasz sobie sprawę, skąd się wziął.
    +10 za wyjaśnienie 😀

    1.    Rayonant powiedział

      Jak mówisz, dobrze się bawiłeś zabijając moją głowę! Dziękuję bardzo za komentarz, pochodzący od kogoś, kto wie tyle, co ty, to zaszczyt!

  7.   Anthony powiedział

    Doskonale !!, nauczyłem się czegoś innego i pomogło mi to odzyskać około 19 MB poprzez usunięcie starego nagłówka, a także odzyskanie niektórych i-węzłów. Teraz mam więcej miejsca do zainstalowania. Ponieważ jestem całkiem nowicjuszem w Linuksie, jeśli wydaje ci się to dobre, zachęcam do napisania posta o tym, jak sformatować, aby uzyskać jak największą liczbę i-węzłów i czy można to zrobić z zachowaniem informacji o dysku, czy nie.
    Pozdrowienia i podziękowania

    1.    Rayonant powiedział

      Jak wspomniałem we wskazaniu na początku wpisu, jest to bardzo rzadki problem i jest związany z małymi partycjami root (<10GB), tak jak w moim przypadku, przy innych rozmiarach jest mało prawdopodobne. Teraz, jeśli chodzi o zmianę ilości i-węzłów, o czym również wspomniałem we wpisie, nie da się tego zrobić bez sformatowania w partycjach typu EXT4, więc nie można było zachować informacji na dysku bez uprzedniego wykonania kopii zapasowej, aby zmień proporcje i-węzłów w bajtach użyj opcji -i w poleceniu mke2fs lub jednej z opcji skojarzonych z -T (małe, duże, ogromne itp.).

  8.   Mario powiedział

    Doskonały! Przedstawienie problemu, wyjaśnienie, dlaczego tak się stało, jego podstawy i kroki rozwiązania! Nazywam to doskonałym wkładem! Dzięki Rayonant!

  9.   Diana Bedoja powiedział

    Dzięki za artykuł, bardzo mi pomógł. Próbowałem wszystkiego, aby przezwyciężyć ten błąd i usuwając stare nagłówki i ich zależności z aptitude, byłem w stanie ponownie zainstalować programy i dokonać aktualizacji. Dziękuję Ci!

  10.   Jasco powiedział

    Przydarzył mi się ten sam problem, nic się nie stało i wywrócił mnie do góry nogami hahaha. W moim przypadku partycja główna miała całkiem sporo wolnej pamięci, ale wykorzystano w niej 100% i-węzłów! Chodzi o to, że jeśli używasz tej samej dystrybucji przez długi czas i nie usuwasz starego jądra z czasem, zaległości są straszne. W moim przypadku udało mi się rozwiązać problem w podobny sposób jak to ująłeś, tyle że sudo apt-get remove lub purge nie działało dla mnie i kluczem do usunięcia tych nieużywanych plików jądra było użycie sudo dpkg –remove i –purge, i jeden po drugim mogłem zwolnić i-węzły. Wszystko, czego się uczysz. Żałuję, że nie znalazłem tego wpisu wcześniej, bo wcześniej bym sprawę rozwiązał. Dzięki za szkicowanie, czym jest i-węzły, nie miałem zbytniego pojęcia.
    Świetny blog, pozdrawiamy!

  11.   Lew powiedział

    Jesteś groso i chociaż jest to uciążliwe, jest to całkiem dobrze rozumiane. Zrobiłem wszystko co do litery, ale nie mogę usunąć poprzednich nagłówków linuxa, to mi nie pozwala, stawia mnie
    E: dpkg został przerwany, musisz ręcznie uruchomić „sudo dpkg –configure -a”, aby naprawić problem
    Wykonuję to, co mi mówi, i to mnie tworzy
    Ustawienie openshot (1.4.0-1ubuntu1) ...
    Traceback (ostatnie połączenie ostatnio):
    Plik „/ usr / sbin / update-python-modules”, wiersz 478, w
    package.install (py_installed)
    Plik „/ usr / sbin / update-python-modules”, wiersz 112, w instalacji
    os.symlink (nazwa pliku, ścieżka docelowa)
    OSError: [Errno 2] Nie ma takiego pliku lub katalogu
    Błąd w sys.excepthook:
    Traceback (ostatnie połączenie ostatnio):
    Plik „/usr/lib/python2.7/dist-packages/apport_python_hook.py”, wiersz 128, w apport_excepthook
    os.O_WRONLY | os.O_CREAT | os.O_EXCL, 0o640), 'w')
    OSError: [Errno 28] Brak miejsca na urządzeniu: „/var/crash/_usr_sbin_update-python-modules.0.crash”

    Pierwotnym wyjątkiem był:
    Traceback (ostatnie połączenie ostatnio):
    Plik „/ usr / sbin / update-python-modules”, wiersz 478, w
    package.install (py_installed)
    Plik „/ usr / sbin / update-python-modules”, wiersz 112, w instalacji
    os.symlink (nazwa pliku, ścieżka docelowa)
    OSError: [Errno 2] Nie ma takiego pliku lub katalogu
    dpkg: błąd podczas przetwarzania openshot (–konfiguruj):
    wątek zainstalował skrypt poinstalacyjny zwrócił kod zakończenia błędu 1
    dpkg: błąd: nie udało się otworzyć `/ var / lib / dpkg / status ', aby zapisać status bazy danych: Brak miejsca na urządzeniu
    Pytanie brzmi, co mam na sobie?

  12.   Paweł powiedział

    Dziękuję Ci bardzo! Ten post bardzo mi pomógł.

  13.   ostry ból powiedział

    Ole!!!

    Nie tylko rozwiązujesz trudny problem, ale ja się uczę (i cieszę) po drodze

  14.   Juan Carlos powiedział

    Cześć. Przede wszystkim dzięki za post ...

    Po drugie, niestety mi to nie pomogło. Doszedłem do tego z powodu problemu zepsutego pakietu, którego system nie pozwala mi rozwiązać z powodu braku miejsca, który w rzeczywistości z tego, co tutaj wyjaśniono, to węzły i.

    Próbowałem więc wyczyścić stare jądra, zgodnie z sugestią, ale system mi nie pozwala:
    juan @ juan-P29G: ~ $ sudo apt-get purge linux-image-3.2.0-29-generic-pae
    Czytanie listy pakietów ... Gotowe
    Tworzenie drzewa zależności
    Czytanie informacji o stanie ... Gotowe
    Możesz chcieć uruchomić „apt-get -f install”, aby to poprawić:
    Następujące pakiety mają niespełnione zależności:
    tzdata-java: Zależy: tzdata (= 2014i-0ubuntu0.12.04), ale 2014e-0ubuntu0.12.04 zostanie zainstalowany
    E: Zależności niespełnione. Wypróbuj „apt-get -f install” bez pakietów (lub określ rozwiązanie).

    A kiedy postępuję zgodnie z radą systemu:
    juan @ juan-P29G: ~ $ sudo apt-get -f install
    Czytanie listy pakietów ... Gotowe
    Tworzenie drzewa zależności
    Czytanie informacji o stanie ... Gotowe
    Poprawianie zależności ... Gotowe
    Zostaną zainstalowane następujące dodatkowe pakiety:
    tzdata
    Następujące pakiety zostaną zaktualizowane:
    tzdata
    1 zaktualizowane, 0 zostaną zainstalowane, 0 do usunięcia, a 23 nie zostanie zaktualizowanych.
    1 nie w pełni zainstalowany lub usunięty.
    Należy pobrać 0 B / 461 kB plików.
    Po tej operacji zostanie zwolnione 31,7 kB.
    Czy chcesz kontynuować [T / n]? s
    Wstępna konfiguracja pakietów ...
    (Czytanie bazy danych… 893468 plików lub katalogów aktualnie zainstalowanych.)
    Przygotowuję do zastąpienia tzdata 2014e-0ubuntu0.12.04 (przy użyciu… / tzdata_2014i-0ubuntu0.12.04_all.deb)…
    Rozpakowanie zamiennika tzdata ...
    dpkg: przetwarzanie błędów /var/cache/apt/archives/tzdata_2014i-0ubuntu0.12.04_all.deb (–unpack):
    Nie można wykonać kopii zapasowej łącza symbolicznego dla `./usr/share/zoneinfo/posix/America/Santo_Domingo ': Brak miejsca na urządzeniu
    Raport „apport” nie został zapisany, ponieważ komunikat o błędzie wskazuje, że dysk jest pełny
    Wystąpiły błędy podczas przetwarzania:
    /var/cache/apt/archives/tzdata_2014i-0ubuntu0.12.04_all.deb
    E: Sub-process / usr / bin / dpkg zwrócił kody błędów 1)

    Błędne koło ... W każdym razie zobaczę, co da się zrobić.

    Pozdrowienia.

  15.   Juan Carlos powiedział

    Witam ponownie… Wiem, jak przerwać błędne koło.

    Usunę obraz najstarszego z jąder za pomocą tego polecenia:
    sudo dpkg – usuń linux-image-3.2.0-29-generic-pae

    Dzięki temu uzyskuję 4389 i-węzłów, wystarczających do naprawy zepsutego pakietu, a następnie usuwam starsze nagłówki jądra, jak wskazano w poście.

    A teraz odzyskam więcej i-węzłów, usuwając kilka starych jąder ...

    Dzięki i pozdrawiam, Juan Carlos.

  16.   anonimowy powiedział

    Nie pozwolił mi usunąć nagłówków

    Napisałem
    sudo nautilus

    I przeszedłem do folderu / usr / src
    Tam widziałem pliki „nagłówkowe” i usunąłem je
    Tym samym pozwolił mi już złożyć zamówienie autoraove

  17.   anonimowy powiedział

    Dziękuję Ci!! post może być trochę stary, ale nadal jest bardzo przydatny, problem rozwiązany za pomocą i-węzłów

  18.   Luis powiedział

    Rayonant: przykładowe wyjaśnienie.
    Chociaż w moim przypadku musiałem rozbudować partycję (z Gparted), to Twój post pomógł mi zrozumieć problem. Po wykonaniu twojej metody przeszedłem z 90% zajętych i-węzłów (po rozszerzeniu partycji) do tylko 28%.
    Dziękuję Ci bardzo. Będę go używać od teraz, aby wyeliminować stare jądra (i nagłówki).
    Dziękuję również Juanowi Carlosowi (miałem ten sam problem).
    Uścisk.

  19.   Hilarus powiedział

    Ciekawy post,
    W moim przypadku spadłem ze 100% do 9%

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

    później odkryłem, że ntopng burze dotykają mojego nosa, wyeliminowałem je i ...

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

    Tachán !!!

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

    Dziękuję