Как ответственно подходить к автоматическому запуску обновлений в Arch Linux?

Как ответственно подходить к автоматическому запуску обновлений в Arch Linux?

Я немного новичок в Arch Linux и все еще привыкаю к ​​некоторым его парадигмам. Я пришел со множеством привычек из другого дистрибутива, который был гораздо более структурированным и в некотором смысле предсказуемым.

Одна вещь, которую я хотел бы сделать с несколькими системами¹, это включить задание cron для автоматического обновления всех системных пакетов. Это кажется довольно простым, за исключением того, что я также хочу получить от системы содержательную обратную связь, сообщающую мне, как все прошло, но не настолько многословную, чтобы я в конечном итоге игнорировал ее, пока не обнаружу, что система барахлит.

  • Полный вывод pacmanне нужен. Мне все равно, сколько времени заняла загрузка или что это обновление 46 из 53.
  • По большей части меня не волнуют успехи.
  • Меня действительно волнуют ошибки. Если запуск обновления не удается, я хочу знать об этом, и любые конкретные сообщения об ошибках должны быть исправлены.
  • Меня волнуют "уведомления", выдаваемые во время установки. Например, сегодняшнее обновление systemd сказало:

    :: coredumps are no longer sent to the journal by default. To re-enable:  
    echo >/etc/sysctl.d/50-coredump.conf \  
        "kernel.core_pattern=|/usr/lib/systemd/systemd-coredump %p %u %g %s %t %e"
    

    Или файловая система выдала это:

    warning: /etc/group installed as /etc/group.pacnew  
    warning: /etc/passwd installed as /etc/passwd.pacnew  
    warning: /etc/shadow installed as /etc/shadow.pacnew
    

    Последняя категория, на самом деле, побудила меня задать этот вопрос, потому что, похоже, они очень непоследовательны в наборе пакетов. Некоторые из них, похоже, генерируются post_upgrade(), другие — install()и т. д. Иногда они записываются в stdout, иногда — в stderr. Формат сообщений сильно различается: иногда целый блок имеет префикс с отступом каким-то образом, в других случаях это просто голая отражаемая строка.

Я хочу знать о вещах, которые могут потребовать моего вмешательства в систему, но не беспокоят меня в противном случае. Есть ли инструмент, который разумно управляет этими данными и упрощает администрирование системы? Есть ли способ получить вывод, сгенерированный пакетами, отдельно от процесса их установки pacman? Или мне самому написать какой-то парсер, который отфильтрует безобидные вещи из журнала установки?

¹ Прежде чем вы начнете возмущаться, насколько это глупо, учтите, что я достаточно умен, чтобы не делать этого на рабочих серверах и без полных резервных копий системы на основе снимков, которые упростят восстановление в случае катастрофы.

решение1

Я хочу прояснить это и для вас, и для любого другого человека, который может оказаться в этой теме. Что вы хотите сделать, так этонетвозможно. Arch не скрывает, что ожидаеттыдля администрирования вашей системы. Часть этой ответственности заключается в присутствии в цикле обновления.

Теперь естьшагипроцесса обновления, который вы можете автоматизировать ответственно, но он никогда не станет автоматизированным -Syu. Вам просто нужно присутствовать при обновлении.

Например, вы можете настроить cronзадание, которое загружает все пакеты, которые необходимо установить (но не устанавливает их). Ниже приведен отрывок из документации pacman:

SYNC OPTIONS
...
-w  --downloadonly
    Retrieve all packages from the server, but do not install/upgrade anything.

Затем вы могли бы настроить cronзадание для запуска sudo pacman -Syuw. Я не очень хорошо знаком с cronего возможностями планирования. Однако, если он способен запускать задание только после выполнения определенного условия (например, команда возвращает определенное значение), то было бы довольно тривиально инициировать загрузку новых пакетов по мере необходимости.

Я бы представил себе запуск проверки против checkupdates | wc -l, например. Если он возвращает любое число выше нуля, вы можете запустить загрузку. Опять же, однако, это не заменит запуск , -Syuкогда вы присутствуете и готовы заняться обновлением.

Для последней части вашего вопроса, где получить вывод того, что произошло во время обновления, вы ищете /var/log/pacman.log. Он включает в себя всю информацию об ошибках, которая может вас заинтересовать.


Естьинструментэто сделано для того, чтобы сделать его pacmanнемного более дружелюбным для незнакомых пользователей. Если я не ошибаюсь, он также предоставляет уведомление о новостях, если должно быть обновление, требующее ручного вмешательства.

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

решение2

Есть старый скрипт, который действительно хорошо справляется со своей задачей; он называетсясейфпак.

EDIT: Этот скрипт все еще доступен на github здесь: https://github.com/bencahill/binfiles/blob/master/safepac

Что он делает и как работает?

Обычно я обновляю Arch следующим образом: читаю новости, а затем делаю pacman -Syu, или просто делаю pacman -Syuи если что-то пойдет не так, читаю новости. Теперь этот скрипт больше ничего не делает: он получает последние записи новостей из RSS-канала, творит sedчудеса и сравнивает имена всех пакетов, для которых доступны обновления, с новостями. Он сопоставляет " package-name " и " package-name- " в новостях, и если имя пакета появляется где-то в новостях, он проигнорирует пакет и обновит только все остальные. Таким образом, все, что может пойти не так, будет отложено до тех пор, пока не появится время проверить это вручную, в то время как некритические обновления будут просто выполнены автоматически!

Обычно, как только вы разобрались с возможно негладким обновлением, вы не захотите игнорировать safepacопределенный пакет, потому что он все еще в новостях. Для этого и нужен список игнорирования. Поэтому каждый раз, когда вы обновляетесь вручную, вы можете добавить соответствующую запись в список игнорирования с помощью , гдеsafepac -Ia xxxxxx— это номер записи новости. Вы также можете указать количество последних новостей, которые вы хотите включить в ее разбор с помощью переключателя -n. Скрипт также достаточно умен, чтобы пропускать несуществующие записи. Если у вас возникли проблемы с пакетами, имеющими очень короткие имена, которые могут произвольно появляться в новостях (например, «да»), вы можете добавить их в белый список с помощью , safepac -Waчтобы они всегда устанавливались, даже если они появляются в новостях.

Обратите внимание, что вам нужна рабочая настройка почты, поскольку этот скрипт также отправляет вам дайджест-письмо (с полным журналом?) и с основными частями обновления:

анализ pacmanвывода для поиска следующих слов и добавления их в дайджест:
"note" "pacnew" "error" "important" "warning" "exists".

Скрипт старый, но идея хорошая и, вероятно, все еще работает с небольшими обновлениями, если таковые имеются.

решение3

Я использую свой собственныйтилитидля запуска yaourtчерез cron.

Связанный контент