Если вы устанавливаете пакет с помощью rpm
, а не из репозитория yum, yum не будет знать, как определить, когда rpm был удален, потому что нет соответствующего репозитория, на который можно было бы ссылаться. Так что часть этого (MariaDB) нельзя сделать идемпотентной.
Если вы хотите сделать свой сценарий идемпотентным, лучшим подходом было бы использовать rpm -q
для данного пакета, чтобы определить, установлен ли он, и использовать этот результат, чтобы решить, запускать ли yum.
Если вы используете rpm
для установки пакета, yum
не заметит сразу, но предупредит вас, когда вы попросите его обновить вашу систему, что база данных RPM была установлена вне yum . По этой причине вы должны использовать yum install
для установки пакетов MariaDB из вашего набора RPM.
Awk script:
extract_pat_space.awk
содержание:
$0 ~ "^#" pat{ f = 1; hash = 0 }
f { print }
NF == 1 && $1 == "#"{
if (++hash == 2) { f = hash = 0 }
}
Использование (для обоих шаблонов):
$ awk -f extract_pat_space.awk -v pat="List" file > list_of_objects.txt
$ awk -f extract_pat_space.awk -v pat="Reports" file > reports.txt
Результаты:
$ cat list_of_objects.txt
#List of Objects
#
# Headers
# Paths
Files not found /var/xxxxx
Files not found /etc/xxxxx
Files not found /mnt/xxxxx
Files not found /safd/xxxxx
#
$ cat reports.txt
#Reports
#
Error-Number 123
Error Number 12345
#
awk '
/#List of Objects/ {f = "objects.txt"}
/#Reports/ {f = "reports.txt"}
f {print > f}
' file
Когда вы увидите один из ключевых заголовков, установите имя выходного файла.
Если переменная была установлена, напечатайте в этот файл.