Отладка ошибки конфигурации dpkg с помощью grub

Отредактировано: добавлены install и demo

Необходимо позаботиться хотя бы о некоторых крайних случаях, таких как

  • повторяющиеся слова в конце (и начале) строки.
  • поиск должен быть нечувствительным к регистру, из-за частых ошибок типа The the apple.
  • возможно, вы хотите ограничить поиск только составляющими слова, чтобы не совпадало что-то вроде ( ( a + b) + c ) (повторяющиеся открывающие скобки.
  • Только полные слова должны совпадать, чтобы исключить тезис
  • Когда речь идет о человеческом языке, символы Unicode внутри слов должны правильно интерпретироваться

В целом я рекомендую pcregrep решение:

pcregrep -Min --color=auto '\b([^[:space:]]+)[[:space:]]+\1\b' file

Очевидно, что цвет и номер строки (опция n) необязательны, но обычно приятны.

Установка

В дистрибутивах на базе Debian вы можете установить через:

$ sudo apt-get install pcregrep

Пример

Выполните команду на jefferson_typo. txt, чтобы увидеть:

$ pcregrep -Min --color=auto '\b([^[:space:]]+)[[:space:]]+\1\b' jefferson_typo.txt
1:He has has refused his Assent to Laws, the most wholesome and necessary
3:He has forbidden his Governors to pass Laws of immediate and
and pressing importance, unless suspended in their operation till his
5:Assent should be be obtained; and when so suspended, he has utterly

Выше просто захват текста, но на терминале с поддержкой цвета совпадения окрашиваются:

  • has has
  • and
  • and
  • be be
6
15.03.2017, 17:04
2 ответа

Итак, на момент написания статьи вы блестяще сузили свою проблему до grub-mkconfig и задаетесь вопросом, как ее отладить.

grub-mkconfig - это сценарий оболочки, который в основном создает ваш конфигурационный файл grub.cfg, выполняя каждый сценарий в /etc/grub.d. В начале set -e есть команда grub-mkconfig, означающая "остановитесь на первой неуправляемой ошибке, с которой вы столкнулись". Скорее всего, ваша проблема связана с ошибкой одного из скриптов grub.d.

Сначала давайте определим виновника. Run:

dash -vx grub-mkconfig -o /boot/grub/grub.cfg

dash, интерпретатор Bourne Shell, который, скорее всего, привязан к /bin/sh, будет выводить каждую строку, которую он выполняет. Поскольку сценарий, вероятно, не работает из-за команды set -e, последняя строка, скорее всего, будет подскриптом grub.d, который не работает. Я предполагаю, что вы получите что-то вроде:

+ echo ### BEGIN /etc/grub.d/99_buggy_script ###
+ /etc/grub.d/99_buggy_script

Само название скрипта, вероятно, не даст вам достаточно доказательств того, что происходит. Поскольку это также сценарий Bourne shell, вы можете отлаживать его тем же способом. Измените первую строку скрипта grub.d с

#!/bin/sh

на:

#!/bin/sh -vx

И запустите grub-mkconfig -o /boot/grub/grub.cfg (dash -vx больше не нужен). Трассировку вы получите из скрипта grub.d.

Надеюсь, теперь проблема будет очевидна. Как только вы ее устраните, не забудьте убрать флаги -vx в начале подскрипта grub.d.

1
27.01.2020, 20:30

Я читал, что вы должны установить grub на все жесткие диски, принадлежащие рейду. Поскольку вы заменили неисправный жесткий диск, вы можете проверить это, запустив:

dpkg-reconfigure grub-pc

при входе в раздел Установочные устройства GRUB , вы можете увидеть, какие устройства отмечены звездочкой * , а какие не являются, и вы можете пометить их, используя курсор и клавишу / клавиши пробела. (Все основные устройства / dev / sda , / dev / sdb , / dev / sdc и т. Д. Должны быть помечены)

По завершении этого шага необходимо переустановить grub и привести все в норму.

0
27.01.2020, 20:30

Теги

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