Ubuntu 20.4 apt --fix-install broken / boot / 100% full [duplicate]

У меня проблема с установкой новых обновлений на моем Ubuntu. Во время исследования я пришел к выводу, что / boot / заполнен на 100%, даже автоматическое удаление не работает (говорит, что запустите pt-fix install first), когда я запускаю apt-fix it errors.

apt fix error

boot full ls

0
задан 30 January 2021 в 00:43

2 ответа

Ваш скриншот показывает, что старые ядра накапливались, заполняющие / загрузки с изображениями ядра ( / Boot / VMlinuz * ) и начальных оперативных дисков ( /boot/initrd.img* ).

Обычно вы захотите сохранить новейшие два или три и избавиться от других.

Чистый и рекомендуемый способ - идентифицировать, к какой упаковке, к которой они принадлежат, а затем удалите этот пакет; например

[sh @ balrog] ~ 1 % ls -lh /boot
total 103M
...
-rw-r--r-- 1 root root  39M Jan 29 15:03 initrd.img-4.15.0-134-generic
-rw-r--r-- 1 root root  39M Jan 29 15:05 initrd.img-4.15.0-135-generic
...
-rw------- 1 root root 8,0M Jan 15 11:32 vmlinuz-4.15.0-134-generic
-rw------- 1 root root 8,1M Jan 18 18:24 vmlinuz-4.15.0-135-generic

[sh @ balrog] ~ 2 % dpkg -S /boot/vmlinuz-4.15.0-134-generic
linux-image-4.15.0-134-generic: /boot/vmlinuz-4.15.0-134-generic

И если вы решите, что это то, что вы хотите избавиться от, удалите его с

sudo dpkg -r linux-image-...

Обратите внимание, что /boot/initrd.img* не принадлежит ни одной упаковке, потому что они генерируются на Fly В зависимости от того, какие модули ядра вам нужны в вашей текущей конфигурации, так что DPKG -S на них всегда будет возвращаться «Нет, найденного сопоставленного шаблона»; Так что сосредоточиться на / boot / vmlinuz * .

После этого обязательно определите загрузчик по этому поводу:

sudo update-grub

В противном случае stare меню будут оставаться в меню Grub (до следующего обновления не приносят новое ядро, которое также будет вызывать это).

HTH

0
ответ дан 18 March 2021 в 23:39
  1. Создайте USB установщика.

    • См. наш учебник по адресу https://ubuntu.com/tutorials/create-a-usb-stick-on-windows .
    • Учебное пособие предназначено для установщика Ubuntu Desktop. Если вы создаете сервер, то просто замените сервер Ubuntu. iso. Процесс создания установщика USB идентичен для обоих.
  2. Загрузка с созданного USB-интерфейса установщика.

    • Следуйте инструкциям.
    • Соблюдайте настройки по умолчанию для простой и быстрой установки. Настройки по умолчанию являются приемлемыми для подавляющего большинства пользователей. Вот почему Ubuntu популярен.
    • Если что-то пойдет не так или вам не понравятся результаты, просто перезагрузитесь и переустановите.
  3. Загрузите установленную систему.

-121--911019-

Удалите -n , как только вы будете рады предложенным преобразованиям.

При переименовании :

rename -n 's/.*(..)\.jpg$/$1.jpg/' *.jpg

Чтобы сделать его рекурсивным в подкаталоги, есть две опции:

  1. используйте рекурсивную оболочку globb

     shopt -s globstar
    переименовать --nopath -n 's/. * (.. )\.jpg $/$ 1.jpg/' * */* .jpg
    
  2. используйте найти

     найти. -name '* .jpg' -execdir переименовать --nopath -n 's/. * (.. )\.jpg $/$ 1.jpg/' {} +
    

Обратите внимание на добавление опции --nopath для предотвращения удаления ведущих элементов пути командой rename . Альтернативой может быть изменение ведущего . * регулярного выражения образца на [^/] * . Следует также отметить, что версия globstar завершится ошибкой, если число совпадений слишком велико (или, точнее, если длина комбинированного аргумента превышает ARG _ MAX ).


С помощью mmv :

mmv -n '*??.jpg' '#2#3.jpg'

этот метод сложно сделать рекурсивным, поскольку он выполняет собственное сопоставление образца. Его можно обернуть в find -type d -execdir... Команда, я полагаю.


Удалите эхо , как только вы будете рады предложенным преобразованиям.

С помощью простой оболочечной петли, предполагая, что мы можем удалить все до последнего пробела включительно:

for f in *.jpg; do echo mv -n -- "$f" "${f##* }"; done

Эту рекурсию можно выполнить с помощью find в том же пути, что и для команды rename :

find . -name '*.jpg' -execdir sh -c 'for f; do echo mv -n -- "$f" "${f##* }"; done' sh {} +

Обратите внимание, что если вы хотите использовать mv "$ f" "$ {f: -6} " версия, предложенная в комментарии Раффы , должна использовать одну из оболочек, которая поддерживает индексацию отрицательных подстрок, например bash / ksh / zsh для скриптлета sh -c .

Вы можете использовать рекурсивный глобус с контуром оболочки, но для применения подстановки параметров, например,

for f in ./**/*.jpg; do d="${f%/*}"; b="${f##*/}"; echo mv "$f" "$d/${b: -6}"; done
-121--911033-

Используйте dpkg вместо apt для удаления некоторых из этих пакетов.

Затем повторите попытку автоматического восстановления.

0
ответ дан 18 March 2021 в 23:39

Другие вопросы по тегам:

Похожие вопросы: