Não é possível remover kernels antigos devido a dependências não atendidas

1

Estou tentando remover kernels antigos no Ubuntu 17.10, mas estou sendo atingido por um erro de dependências não atendido. Meu kernel atual é o linux 4.13.0-38-generic.

Minha saída de dpkg -l | grep linux-image | awk '{print$2} é esta:

linux-image-4.13.0-36-generic

linux-image-4.13.0-37-generic

linux-image-4.13.0-38-generic

linux-image-4.13.0-39-generic

linux-image-extra-4.13.0-36-generic

linux-image-extra-4.13.0-37-generic

linux-image-extra-4.13.0-38-generic

linux-image-extra-4.13.0-39-generic

linux-image-extra-4.13.0-41-generic

linux-image-generic

Quando tento remover os kernels mais antigos ( sudo apt-get purge linux-image-x.x.x-x-generic ), este é o erro:

Reading package lists... Done Building dependency tree
Reading state information... Done You might want to run 'apt --fix-broken install' to correct these. The following packages have unmet dependencies: linux-image-extra-4.13.0-41-generic : Depends: linux-image-4.13.0-41-generic but it is not installed linux-image-generic : Depends: linux-image-4.13.0-41-generic but it is not installed E: Unmet dependencies. Try 'apt --fix-broken install' with no packages (or specify a solution).

Para corrigir as dependências quebradas, eu uso sudo apt --fix-broken install , clique em Sim quando for perguntado se quero continuar e obter essa saída:

Reading package lists... Done
Building dependency tree       
Reading state information... Done
Correcting dependencies... Done
The following packages were automatically installed and are no longer required:
  libqpdf18 linux-headers-4.13.0-37 linux-headers-4.13.0-37-generic
  linux-image-4.13.0-37-generic linux-image-extra-4.13.0-37-generic
Use 'sudo apt autoremove' to remove them.
The following additional packages will be installed:
  linux-image-4.13.0-41-generic
Suggested packages:
  fdutils linux-doc-4.13.0 | linux-source-4.13.0 linux-tools
The following NEW packages will be installed:
  linux-image-4.13.0-41-generic
0 upgraded, 1 newly installed, 0 to remove and 15 not upgraded.
5 not fully installed or removed.
Need to get 0 B/20.9 MB of archives.
After this operation, 72.6 MB of additional disk space will be used.
Do you want to continue? [Y/n] Y
(Reading database ... 374331 files and directories currently installed.)
Preparing to unpack .../linux-image-4.13.0-41-generic_4.13.0-41.46_amd64.deb ...
Examining /etc/kernel/preinst.d/
run-parts: executing /etc/kernel/preinst.d/intel-microcode 4.13.0-41-generic /boot/vmlinuz-4.13.0-41-generic
Done.
Unpacking linux-image-4.13.0-41-generic (4.13.0-41.46) ...
dpkg: error processing archive /var/cache/apt/archives/linux-image-4.13.0-41-generic_4.13.0-41.46_amd64.deb (--unpack):
 cannot copy extracted data for './boot/vmlinuz-4.13.0-41-generic' to '/boot/vmlinuz-4.13.0-41-generic.dpkg-new': failed to write (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 4.13.0-41-generic /boot/vmlinuz-4.13.0-41-generic
run-parts: executing /etc/kernel/postrm.d/zz-update-grub 4.13.0-41-generic /boot/vmlinuz-4.13.0-41-generic
Errors were encountered while processing:
 /var/cache/apt/archives/linux-image-4.13.0-41-generic_4.13.0-41.46_amd64.deb

A saída de uname -r é: 4.13.0-38-generic

A saída de df -h é:

Filesystem              Size  Used Avail Use% Mounted on
udev                     63G     0   63G   0% /dev
tmpfs                    13G  2.7M   13G   1% /run
/dev/mapper/sdb2_crypt  1.9T 1004G  779G  57% /
tmpfs                    63G   39M   63G   1% /dev/shm
tmpfs                   5.0M  4.0K  5.0M   1% /run/lock
tmpfs                    63G     0   63G   0% /sys/fs/cgroup
/dev/nvme0n1p1          1.1T  472G  573G  46% /mnt/scratch
/dev/sdb1               231M  222M     0 100% /boot
/dev/md126p1            9.1T  3.0T  6.2T  33% /mnt/10TB
tmpfs                    13G   84K   13G   1% /run/user/1001
tmpfs                    13G     0   13G   0% /run/user/1004
    
por Merilla Michael 21.05.2018 / 16:35

1 resposta

0

Você precisa liberar espaço no diretório /boot primeiro. Você tem quatro 4.4.13.0 kernels de cadeia: -36 , -37 , -38 e -39 . Você só precisa de -38 e -39 . Então você precisa remover -36 e -37 . Eu não tenho eles instalados, mas para dar uma ideia de como eles seriam, usei este comando:

$ ll /boot/*4.4.0-124*
-rw-r--r-- 1 root root  1251054 May  2 08:58 /boot/abi-4.4.0-124-generic
-rw-r--r-- 1 root root   190654 May  2 08:58 /boot/config-4.4.0-124-generic
-rw-r--r-- 1 root root 43369621 May 17 06:00 /boot/initrd.img-4.4.0-124-generic
-rw-r--r-- 1 root root      255 May  2 08:58 /boot/retpoline-4.4.0-124-generic
-rw------- 1 root root  3898100 May  2 08:58 /boot/System.map-4.4.0-124-generic
-rw------- 1 root root  7143952 May  2 08:58 /boot/vmlinuz-4.4.0-124-generic

Repita este comando em seu sistema substituindo 4.4.0-124 por 4.13.0-36 e 4.13.0-37 . Como você verá, cada kernel leva cerca de 450 MB em /boot .

Em seguida, cuidadosamente digite esses comandos (mas não os comentários # ):

sudo rm -f /boot/*4.13.0-36*
sudo rm -f /boot/*4.13.0-37*
sudo apt install -f  # Ensure all dependency errors are now fixed.
sudo apt update      # There should be no errors reported.
sudo apt autoremove  # This will finish removing kernels -36 & -37.
sudo apt upgrade     # This should install new kernel 4.13.0-41
sudo reboot          # You will now boot into kernel 4.13.0-41

Após a reinicialização, e qualquer outra hora após a inicialização de uma nova atualização de kernel, execute:

sudo apt autoremove  # This will keep you at current kernel plus previous version (4.13.0-39) and remove all others

Se você tiver a menor dúvida ou incerteza poste um comentário abaixo .

    
por WinEunuuchs2Unix 21.05.2018 / 17:56