Mój pierwszy problem był, kiedy próbowałem apt-get update
lub apt-get upgrade
. Po uaktualnieniu pojawia się następujący błąd:
You might want to run 'apt-get -f install' to correct these.
The following packages have unmet dependencies:
linux-image-server : Depends: linux-image-3.2.0-27-generic but it is not installed
E: Unmet dependencies. Try using -f.
Próbowałem uruchomić apt-get install -f i to był wynik (po powiedzeniu tak po znaku zachęty)
(Reading database ... 186183 files and directories currently installed.)
Unpacking linux-image-3.2.0-27-generic (from .../linux-image-3.2.0-27-generic_3.2.0-27.43_amd64.deb) ...
Done.
dpkg: error processing /var/cache/apt/archives/linux-image-3.2.0-27-generic_3.2.0-27.43_amd64.deb (--unpack):
failed in write on buffer copy for backend dpkg-deb during `./boot/System.map-3.2.0-27-generic': No space left on device
No apport report written because the error message indicates a disk full error
dpkg-deb: error: subprocess paste was killed by signal (Broken pipe)
Examining /etc/kernel/postrm.d .
run-parts: executing /etc/kernel/postrm.d/initramfs-tools 3.2.0-27-generic /boot/vmlinuz-3.2.0-27-generic
run-parts: executing /etc/kernel/postrm.d/zz-update-grub 3.2.0-27-generic /boot/vmlinuz-3.2.0-27-generic
Errors were encountered while processing:
/var/cache/apt/archives/linux-image-3.2.0-27-generic_3.2.0-27.43_amd64.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)
Próbowałem uruchomić apt-get autoremove
i daje mi ten sam błąd co apt-get upgrade
.
Po uruchomieniu df
otrzymuję to za /boot
:
/dev/sda1 233191 230297 0 100% /boot
Czytam więc gdzie indziej, że powinienem spróbować oczyścić stare jądra. Sprawdziłem, jakie jądra mam z:
$ dpkg -l linux-image-\* | grep ^ii
ii linux-image-2.6.38-13-server 2.6.38-13.52 Linux kernel image for version 2.6.38 on x86_64
ii linux-image-3.0.0-13-server 3.0.0-13.22 Linux kernel image for version 3.0.0 on x86_64
ii linux-image-3.0.0-14-server 3.0.0-14.23 Linux kernel image for version 3.0.0 on x86_64
ii linux-image-3.0.0-15-server 3.0.0-15.26 Linux kernel image for version 3.0.0 on x86_64
ii linux-image-3.0.0-16-server 3.0.0-16.29 Linux kernel image for version 3.0.0 on x86_64
ii linux-image-3.0.0-17-server 3.0.0-17.30 Linux kernel image for version 3.0.0 on x86_64
ii linux-image-3.2.0-24-generic 3.2.0-24.39 Linux kernel image for version 3.2.0 on 64 bit x86 SMP
ii linux-image-3.2.0-25-generic 3.2.0-25.40 Linux kernel image for version 3.2.0 on 64 bit x86 SMP
ii linux-image-3.2.0-26-generic 3.2.0-26.41 Linux kernel image for version 3.2.0 on 64 bit x86 SMP
Kiedy próbuję usunąć najstarszy z tym:
$ sudo apt-get purge linux-image-2.6.38-13-server
Reading package lists... Done
Building dependency tree
Reading state information... Done
You might want to run 'apt-get -f install' to correct these:
The following packages have unmet dependencies:
linux-image-server : Depends: linux-image-3.2.0-27-generic but it is not going to be installed
E: Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a solution).
Jak mogę zwolnić lub przedłużyć rozruch bez zakłócania instalacji?
upgrade
apt
partitioning
Strifey16
źródło
źródło
Remove-Unused-Dependencies
nie jest domyślna?Odpowiedzi:
Zwalnianie miejsca w systemie plików root
Aby zwolnić miejsce w głównym systemie plików, możesz spróbować wykonać
apt-get clean
.Jeśli to nie zadziała, możesz przejść
/var/cache/apt/archives
i ręcznie usunąć kilka plików z pamięci podręcznej, aby odzyskać trochę miejsca, np .:Usunięcie wszystkich
.deb
plików tutaj nie zaszkodzi, jeśli zajdzie taka potrzeba - właśnie toapt-get clean
robi. Zostaną automatycznie pobrane ponownie,apt
jeśli będą potrzebne.Zwalnianie miejsca w systemie plików / boot
Oryginalny plakat ma oddzielną
/boot
partycję, która jest pełna i uniemożliwia działanieapt
systemu. Konieczne będzie, aby zwolnił tam miejsce.Jeśli jest prawie wystarczająca ilość miejsca, przejdź do
/boot
i usuń plik konfiguracyjny lub dwa:na przykład, ale używając nazwy jednej z wersji jądra, którą i tak zamierzasz usunąć. To zwolni trochę miejsca (około 144 KB na sztukę).
Jeśli potrzebujesz więcej miejsca indywidualnie usunąć stare
vmlinuz
,initrd
,abi
orazSystem.map
pliki aż masz wystarczająco dużo miejsca (około 22m dla jednego z moich i386 wersji jądra).Cokolwiek zrobisz, nie usuwaj ich wszystkich . Powinieneś zachować przynajmniej dwie ostatnie pasujące wersje każdego rodzaju pliku, dla każdego rodzaju używanego jądra.
Następnie postępuj zgodnie z poleceniami instalacji apt-get. Jak wspomniano powyżej, może być konieczne ponowne pobranie niektórych usuniętych debetów, ale jeśli tak, nastąpi to automatycznie. Po ponownym uruchomieniu apt, posprzątaj za pomocą apt-get, aby usunąć pakiety odpowiadające usuniętym plikom - więc wszystko pasuje.
Plik konfiguracyjny w
/boot
to konfiguracja jądra, która została użyta przez zespół jądra do zbudowania jądra o tej samej nazwie. Usunięcie powinno być nieszkodliwe, chyba że chcesz go w celach informacyjnych lub pomóc w budowaniu własnych jąder.Na koniec ręcznie usuwasz stary pakiet jądra lub dwa z
/boot
partycji, aby zrobić jeszcze więcej miejsca na nową.źródło
sudo rm
do usuwania z / boot. Zamiast tego użyj,sudo dpkg --purge
aby usunąć stary pakiet obrazu linux. Następnie użyj,sudo apt-get -f install
aby naprawić zepsutą zależność.rm
można go użyć.W moim przypadku
apt
polecenia idpkg
polecenia nie mogły się zakończyć i nie mogły zostać usunięte. Automatyczna aktualizacja nie powiodła się podczas instalacji2.6.32-56-server
.Moim pierwszym krokiem było określenie przestrzeni do wykorzystania,
Miałem około 30 jąder i plików pomocniczych.
Zrobiłem a,
uname -a
aby uzyskać działające jądro, zauważyłem, że pracowałem na Linuksie na przemian2.6.32-43-server
i zrobiłemtar
6 z wersji, które nie były uruchomione i były stare.Następnie zrobiłem jedną
rm -rf
z kopii zapasowej:Pokazuję te polecenia jako przykłady, musisz zdecydować, z czym będziesz pracować w swojej sytuacji.
Teraz, gdy miałem trochę miejsca
/boot
, mogłem biegaćAby usunąć nieudaną instalację
2.6.32-56-server
.Potem zrobiłem
To dało mi miejsce na odłożenie tego, co utworzyłem kopię zapasową.
Aby posprzątać, mógłbym uruchomić:
Zrestartowałem się i teraz używam 4%
/boot
.źródło
Możesz użyć
dpkg
zamiastapt-get
usunąć starsze jądra:źródło
/boot
partycji).Zauważyłem, że w katalogu rozruchowym nadal są pliki starych wersji:
Menedżer pakietów wyświetli stare wersje:
Dlatego użyłem tego polecenia (
autoremove
usunęłbym również nowsze obrazy, których nie chcę usuwać)Pozostało mi jeszcze kilka nagłówków:
Więc zrobiłem to:
W końcu została jedna paczka, której nie mogłem usunąć przy pomocy apt-get purge:
Źródło: Usuń pakiet oznaczony jako rc przez dpkg
źródło
Sprawdź użycie
/var/tmp
zdu -sh /var/tmp/
. Wszystkie pliki w tym folderze można usunąć, aby zwolnić miejsce.Następnie możesz uruchomić następujące polecenie, aby usunąć stare jądra:
źródło
/var/tmp
ma wspólnego ze starymi jądrami? I nie zawsze jest bezpiecznie usunąć wszystko w/var/tmp
...Właśnie tego użyłem:
Zrób to dla wszystkich starych jąder i zachowaj tylko dwa ostatnie.
Jeśli chcesz automatycznie usunąć stare jądra i zaktualizować GRUB, zobacz to: Dokumentacja Ubuntu
źródło
Odkryłem, że jedyną rzeczą, która działała dla mnie, było używanie Aptitude.
Potem, kiedy się otworzy, zwykle mówi coś o niezaspokojonych zależnościach na dole. Możesz nacisnąć literę,
g
aby kontynuować sugerowane usunięcie. Zabierze Cię na stronę, na której znajduje się lista wydarzeń.Obok
-
zepsutych jąder powinien znajdować się minus . Naciśnijg
ponownie, aby usunąć uszkodzone jądra. Naciśnij,q
aby wyjść. Następnie powinieneś być w stanie użyć,sudo apt-get autoremove
aby pozbyć się starych jąder i zwolnić miejsce.źródło
Państwo nie może działać na pakietach, ale może działać na innych plików. Najpierw przejrzyj folder domowy i sprawdź, czy możesz coś usunąć. Jeśli nie, spróbuj przenieść dużą liczbę plików na inną partycję (lub dysk flash), a następnie spróbuj
sudo apt-get install -f
rozwiązać problemy z zależnościami pakietu (najprawdopodobniej zainstalowałeś plik .debdpkg
), a następnie wyczyść wszystkie stare jądra. Gdy już będziesz mieć co najmniej 10 MB, spróbuj usunąć niepotrzebne oprogramowanie lub pliki.źródło
Użyj Menedżera pakietów Synaptic. Po prostu wybierz pakiet, który chcesz usunąć, a wyświetli się monit o usunięcie pakietów, które od niego zależą. Z mojego doświadczenia wynika, że pakiety jądra zawsze występują w grupach po dwie (lub więcej, w zależności od tego, jak się liczy), które są od siebie zależne. Zwykle można szybko znaleźć stare, używając filtra „lokalne / przestarzałe”.
źródło
Od czasu do czasu walczę z tym problemem i wciąż nie widziałem żadnego rozwiązania, które faktycznie wykonałoby całą robotę. W niektórych przypadkach usuwanie starych jąder kończy się na zależnościach, które powstrzymują mnie przed usunięciem czegokolwiek i musiałem ręcznie usunąć jądra z / boot. Jednak nadal chciałem wykonać całą robotę, ponieważ wyobrażam sobie, że ręcznie usunięte jądra są gdzieś logowane i mogą powodować przyszłe problemy, gdy coś zgłasza brakujące pliki, ponieważ siedzę i robię rm -rf na plikach.
Napisałem więc ten skrypt, oparty na wielu wyszukiwarkach Google, które nie wymagają dalszej instalacji czegoś. Skrypt został kilkakrotnie zmodyfikowany, aby obsługiwał moje własne „nieoczekiwane” sytuacje. Na przykład, uruchamiając to na Raspberry Pi, aktualizacja-grub prawdopodobnie nie istnieje. W niektórych przypadkach, gdy uruchomiono ostatnie aktualizacje, serwery utknęły z IPv6, gdzie niektóre witryny były nieosiągalne.
Skrypt dowiaduje się, czy musi siłą usuwać jądra całkowicie zablokowane z powodu kompilacji zależności, a także czy może to zrobić „we właściwy” sposób.
źródło
Po prostu uruchomienie
sudo apt-get -f autoremove
rozwiązało mój problem.źródło
/dev/sda1
jest zamontowany/
Uruchomić to:
Źródło: Otrzymuję ten błąd po aktualizacji. proszę pomóż
źródło
apt
nie uda się usunąć pakietów jądra, ponieważ sam proces usuwania generuje pliki/boot
, które są już pełne. Właśnie dlategoapt-get autoremove
zawodzi. Pytanie, którego szukasz, to askubuntu.com/q/142926/158442 , które już ma naautoremove
liście.Widziałem kilka artykułów na temat / bootowania, które nie zostały rozwiązane przez dpkg usuwające stare jądra Linuksa, ponieważ apt-get -f install lub apt-get -f autorov e ponownie instaluje jądra.
W moim przypadku przynajmniej podpisane i dodatkowe pakiety również musiały zostać usunięte - jądra były zależnościami dla tych pakietów, więc je ponownie zainstalowałem. Ogólnie rzecz biorąc, powiązane pakiety jądra powinny zostać usunięte przed wywołaniem „install”. Jeśli próbujesz apt-get upgrade zaraz po wyczyszczeniu, komunikat o błędzie powinien powiedzieć, które pakiety mają niezaspokojoną zależność od jądra, które właśnie wyczyściłeś.
W moim przypadku zadziałała następująca taktyka:
źródło
Zainstalować linux-oczyszczający narzędzia takie jak ten .
Następnie uruchom w terminalu:
Następnie usuwaj jądra, np
Dodatkowy:
Jeśli chcesz użyć linux-purge do nienadzorowanego usuwania jądra zamiast do tego celu używać nienadzorowanych aktualizacji, powinieneś wyłączyć usuwanie nieużywanych rzeczy przez edycję /etc/apt/apt.conf.d/50unattended-upgrades i skonfiguruj usługę systemd wykonywanie
kiedykolwiek chcesz.
źródło