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


15

Я немного новичок в 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? Или я сам пишу какой-то парсер, который отфильтровывает полезные вещи из журнала установки?

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


Первое, что я хотел бы сделать, это удалить yaourtметку как из вашего вопроса, так и из вашей концептуальной модели: попытка сделать это с помощью официальных репозиториев будет достаточно сложной, добавление случайных пакетов из AUR в микшер сделает его смешным ...
jasonwryan

О, и это не глупая идея; но это очень сильно мешает работе Арка. Использование checkupdatesи использование -Syuодин раз в день - довольно тривиальная задача; Я не вижу никакой реальной пользы для всей работы, которую повлечет ваше предложение.
jasonwryan

@jasonwryan Я хотел бы остановиться на этом, но у меня действительно есть несколько пакетов AUR, которые я хотел бы вписать в один и тот же рабочий процесс. В настоящее время я широко использую yaourt и очень скучаю по тому факту, что не поддерживается пробная поддержка операций по управлению пакетами! : /
Калеб

2
ДНК Арка запачкает ваши руки: это просто не тот путь, которым намеревались управлять; вы можете попасть туда, но это будет пиррова победа и, если документально подтверждено здесь, просто приведет множество новичков к краю обрыва, к которому они совершенно не готовы ...
jasonwryan

2
Я потратил некоторое время, пытаясь это сделать в прошлом году, и пришел к выводу, что единственный способ выполнить обновления без регулярного уничтожения систем - это создать новые образы (которые, по-видимому, являются базовой точкой тестирования и более надежными в Arch), чем сервисы трансплантации с конфигурацией инструмент управления. Может быть, обновления немного успокоились, но в течение 6 месяцев было 3-4, которые могли бы подключить систему без ручного вмешательства.
Мэтт

Ответы:


11

Я хочу быть ясным как для вас, так и для любого другого человека, который может встретиться в этой теме. То, что вы хотите сделать, не возможно. 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
На самом деле, для уведомлений об официальных пакетах, которые требуют ручного вмешательства, я бы рекомендовал вам следовать arch-dev-public и arch-general .
HalosGhost

Кроме того, @jasonwryan совершенно правильно. Это pacmanможет быть возможно. Делать это с yaourtне возможно.
HalosGhost

yaourtна самом деле делает это немного лучше, чем pacman, хотя, как я думаю, вы имеете в виду, что его конфигурация по умолчанию, чуть больше, чем помощник aur, почти наверняка испортит ситуацию в долгосрочной перспективе. Это, однако, чрезвычайно настраиваемо, и может быть сделано, чтобы поддерживать исходные деревья очень эффективно. Как yaourtи pacmanтолько завернуть в alpmлюбом случае.
mikeserv

Или, я полагаю, более правильно сказать, yaourtобертки pacmanи некоторые дополнительные alpmфункции и pacmanобертывания alpm. В любом случае, однако, yaourtрасширяется pacman.
mikeserv

Как отмечено здесь , -Syuwэто потенциально довольно опасно. Он имеет возможность производить частичные обновления, если обновления не применяются, а программное обеспечение позднее устанавливается с -S.
Sparhawk

1

Есть старый сценарий, который делает действительно хорошую работу; это называется safepac .

РЕДАКТИРОВАТЬ: Этот скрипт все еще доступен на GitHub здесь: https://github.com/bencahill/binfiles/blob/master/safepac

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

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

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

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

парсинг pacmanвыходных данных для поиска этих слов и добавления их в дайджест:
«note» «pacnew» «error» «важный» «warning» «существует».

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


Одной из возможных проблем является серьезное (или критическое) обновление, о котором не сообщается в новостях, но вы должны отслеживать это самостоятельно. Показательный пример: обновление с python2 до python3
Lesto

Тем не менее, вы можете использовать checkupdates (pacman-utils) и получить список пакетов, а затем удаленно внести их в белый список, что хорошо, если у вас есть пул, но тогда, возможно, лучше настроить что-то вроде локального репо
Lesto

-2

Я использую свою собственную жизнь, чтобы управлять yaourtcron.


1
Яурт фактически мертв : это потрясающе плохая идея.
Джейсонвриан

Я использовал yaourtмного лет сам. Это был хороший инструмент, но вещи, которые он собирал для «обертки», изменили форму, и теперь он делает несколько вещей совершенно неправильно. На данный момент это настолько проблематично, что авторы инструмента сказали, что даже они сами больше его не используют. Если вам нужен помощник AUR, советую попробовать один из активно поддерживаемых. Я переключился на yayсебя и вполне счастлив.
Калеб

Эта утилита работает и yayдля меня.
Вадим
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.