Як я можу відповідально запустити оновлення автоматично в 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. Формат повідомлень дуже різниться: іноді цілий блок певним чином розміщений з відступом, в інших випадках - просто гола відлуння.

Я хочу знати про речі, які можуть вимагати мого втручання в систему, але не турбуватися інакше. Чи є там інструмент, який інтелектуально управляє цими даними та спрощує системне адміністрування? Чи є якийсь спосіб отримати вихід, згенерований пакетами окремо від процесу їх встановлення? Або я самостійно написати якийсь аналізатор, який фільтрує доброякісні речі з журналу встановлення?

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


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

О, і це не дурна думка; але це дуже підштовхує до того, як працює Арка. Використання checkupdatesта використання -Syuодного разу на день - досить тривіальне завдання; Я не бачу фактичної користі для всієї роботи, яку спричинила б ваша пропозиція.
Jasonwryan

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

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

2
У минулому році я пробував деякий час і прийшов до висновку, що єдиним способом домогтися модернізації без регулярного вбивства систем є створення нових зображень (що, здається, є базовим тестовим пунктом і надійнішим в Arch), а потім служба трансплантації з конфігурацією інструмент управління. Можливо, оновлення трохи вляглися, але було 6 - 3 місяці, які потребували б шлангу системи без ручного втручання.
Метт

Відповіді:


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 .

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

Що це робить і як це працює?

Те, як я зазвичай оновлюю Arch, - це читати новини, а потім робити pacman -Syuабо просто робити, pacman -Syuі якщо щось піде не так, прочитайте новини. Тепер цей сценарій не робить нічого іншого: він отримує останні новини з RSS-каналу, робить sedмагію та порівнює назви всіх пакетів, які мають оновлення для новин. Він відповідає "ім'я пакета" та "ім'я пакета" у новинах, і якщо ім'я пакета з'явиться десь у новинах, воно проігнорує пакунок та оновить лише всі інші. Таким чином, все, що може піти не так, буде відкладено, поки хтось не встигне перевірити цю справу вручну, тоді як некритичні оновлення просто робитимуться автоматично!

Зазвичай, після того, як ви подбали про можливе не плавне оновлення, вам не захочеться safepacігнорувати певний пакет, оскільки він все ще є в новинах. Ось для чого ігнорист. Тому щоразу, коли ви оновлюєтесь вручну, ви можете додавати відповідний запис новин до списку ігнорування , де є номер запису новин. Ви також можете вказати кількість останніх новин, які ви хочете включити в його розбір за допомогою перемикача. Сценарій також досить розумний, щоб пропустити неіснуючі записи. Якщо у вас виникли проблеми з пакетами з дуже короткими іменами, які можуть довільно відображатися в новинах (наприклад, "так"), ви можете додати їх у білий список, щоб вони завжди були встановлені, навіть якщо вони з'являться в новинах.safepac -Ia xxxxxx-nsafepac -Wa

Зауважте, що вам потрібна установка робочої пошти, оскільки цей скрипт також надсилає вам дайджест пошти (з повним журналом?) Та виразними частинами оновлення:

розбір pacmanрезультатів пошуку цих слів і додавання їх до дайджесту:
"note" "pacnew" "error" "важливе" "попередження" "існує".

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


одне можливе питання - головне (або проривне) оновлення, не повідомляється в новинах, але вам слід відстежувати самостійно. Справа в точці, оновлення з python2 на python3
Lesto

Тим не менш, ти можеш скористатися реєстраційними пакетами (pacman-утилітами) та отримати список пакетів, а потім віддалено додати їх у білий список, добре, якщо у тебе є пул, але тоді, можливо, краще налаштувати щось на зразок місцевої репо-служби
Lesto

-2

Я використовую своє власне поки що, щоб бігати yaourtза кроном .


1
Яурт фактично мертвий : це надзвичайно погана ідея.
jasonwryan

Я yaourtбагато років сам користувався. Це був хороший інструмент, але речі, які він був побудований для "обгортання", змінили форму, і це робить кілька речей зовсім неправильно. На сьогоднішній день це настільки проблематично, що автори цього інструмента сказали, що вони вже самі не використовують його. Якщо ви хочете помічників AUR, я пропоную спробувати один з активно підтримуваних. Я перейшов до yayсебе і дуже задоволений.
Калеб

Ця утиліта працює і yayдля мене.
вадзим
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.