Jak mogę odpowiedzialnie uruchamiać aktualizacje automatycznie w Arch Linux?


15

Jestem trochę nowicjuszem w Arch Linux i wciąż przyzwyczajam się do niektórych jego paradygmatów. Pochodzę z wielu nawyków z innej dystrybucji, która była nieco bardziej uporządkowana i pod pewnymi względami przewidywalna.

Jedną rzeczą, którą chciałbym zrobić z kilkoma systemami¹, jest umożliwienie zadania cron wykonywania automatycznych aktualizacji wszystkich pakietów systemowych. Wydaje się, że byłoby to dość łatwe, z wyjątkiem tego, że chcę też od systemu znaczących informacji zwrotnych, które mówią mi, jak sprawy potoczyły się nie tak gadatliwie, że w końcu ignoruję to, dopóki nie odkryję, że system działa.

  • Pełna wydajność pacmanjest niepotrzebna. Nie obchodzi mnie, jak długo trwało pobieranie lub czy trwa aktualizacja 46 z 53.
  • W przeważającej części nie dbam o sukcesy.
  • Dbam o błędy. Jeśli aktualizacja się nie powiedzie, chcę o tym wiedzieć, a wszelkie konkretne komunikaty o błędach powinny zostać załatane.
  • Dbam o „powiadomienia” wydawane podczas instalacji. Na przykład dzisiejsza aktualizacja systemowa powiedziała:

    :: 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"
    

    Lub system plików wytworzył to:

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

    Ta ostatnia kategoria faktycznie skłoniła mnie do zadania tego pytania, ponieważ wydaje się, że są one bardzo niespójne w całym zestawie pakietów. Niektóre z nich wydają się być generowane przez post_upgrade(), inne przez install(), itp. Czasami są zapisywane na stdout, czasem na stderr. Format wiadomości jest bardzo zróżnicowany: czasami cały blok jest w jakiś sposób poprzedzany wcięciem, innym razem jest tylko ciąg echa.

Chcę wiedzieć o rzeczach, które mogą wymagać mojej interwencji w systemie, ale nie przeszkadzają mi inaczej. Czy istnieje narzędzie, które inteligentnie zarządza tymi danymi i upraszcza administrację systemem? Czy jest jakiś sposób, aby uzyskać wynik generowany przez pakiety oddzielnie od procesu pacman instalującego je? Czy też sam jestem w stanie napisać parser, który odfiltruje łagodne elementy z dziennika instalacji?

¹ Zanim przejdziesz do końca, jakie to głupie, pamiętaj, że jestem wystarczająco inteligentny, aby nie robić tego na serwerach produkcyjnych i nie bez pełnych kopii zapasowych systemu opartych na migawkach, które ułatwiłyby odzyskiwanie w razie katastrofy.


Pierwszą rzeczą, którą bym zrobił, to usunięcie yaourttagu, zarówno z twojego pytania, jak i twojego modelu koncepcyjnego: próba zrobienia tego z oficjalnymi repozytoriami będzie wystarczająco trudna, dodanie losowych pakietów z AUR do miksu sprawi, że będzie on quixotic ...
jasonwryan

Aha, a to nie jest głupi pomysł; ale bardzo naciska to na sposób działania Arch. Używanie checkupdatesi używanie -Syuraz dziennie jest dość trywialnym zadaniem; Nie widzę żadnej rzeczywistej korzyści dla całej pracy, którą pociąga za sobą twoja propozycja.
jasonwryan

@ jasonwryan Chciałem to rozwinąć, ale tak naprawdę mam kilka pakietów AUR, które chciałbym zmieścić w tym samym przepływie pracy. Obecnie często korzystam z yaourt i bardzo tęsknię za faktem, że nie ma wsparcia na sucho dla operacji zarządzania pakietami! : /
Caleb

2
DNA Arch zabrudza ręce: to nie jest sposób, w jaki powinien być uruchamiany; możesz się tam dostać, ale będzie to zwycięstwo Pyrrhic i, jeśli zostanie to udokumentowane, poprowadzi wielu początkujących do krawędzi urwiska, na które są całkowicie nieprzygotowani ...
jasonwryan

2
Spędziłem trochę czasu próbując w zeszłym roku i doszedłem do wniosku, że jedynym sposobem na uzyskanie aktualizacji bez regularnego zabijania systemów było zbudowanie nowych obrazów (które wydają się być podstawowym punktem testowym i bardziej niezawodnym w Arch), a następnie usługi transplantacji z konfiguracją Narzędzie zarządzania. Być może aktualizacje nieco się ustabilizowały, ale w ciągu 6 miesięcy pojawiły się 3-4, które doprowadziłyby do systemu bez interwencji manualnej.
Matt

Odpowiedzi:


11

Chcę być jasne zarówno dla ciebie, jak i każdej innej osoby, która może spotkać ten wątek. To, co chcesz zrobić, nie jest możliwe. Arch nie ukrywa, że ​​oczekuje od ciebie administrowania systemem. Część tej odpowiedzialności jest obecna w cyklu aktualizacji.

Teraz są etapy procesu aktualizacji, które można zautomatyzować w sposób odpowiedzialny, ale nigdy nie będzie to zautomatyzowane -Syu. Musisz tylko być przy aktualizacji.

Możesz na przykład skonfigurować cronzadanie, które pobiera pakiety, które muszą zostać zainstalowane (ale nie instaluje ich). Poniżej znajduje się fragment pacmandokumentacji:

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

Następnie możesz skonfigurować cronzadanie do uruchomienia sudo pacman -Syuw. Nie jestem zbytnio zaznajomiona z cronjej zdolnościami do planowania. Jeśli jednak jest on w stanie uruchomić zadanie tylko po spełnieniu określonego warunku (na przykład komenda zwracająca określoną wartość), wówczas uruchamianie pobierania nowych pakietów w razie potrzeby byłoby dość trywialne.

Wyobrażam sobie checkupdates | wc -lna przykład wykonanie czeku . Jeśli zwróci dowolną liczbę powyżej zera, możesz uruchomić pobieranie. Ponownie jednak nie zastąpi to uruchomienia -Syui gotowości do poradzenia sobie z aktualizacją.

Na ostatnią część pytania, gdzie uzyskać wyniki tego, co wydarzyło się podczas aktualizacji, szukasz /var/log/pacman.log. Zawiera wszystkie informacje o błędach, które mogą Cię zainteresować.


Istnieje narzędzie, które ma uczynić pacmannieco bardziej przyjaznym dla nieznanych użytkowników. Jeśli się nie mylę, zapewnia również powiadomienie o wiadomościach, jeśli powinna istnieć aktualizacja wymagająca ręcznej interwencji.

To narzędzie może na krótki czas uprościć ci życie, ale nigdy nie zastąpi rozsądnego i starannego śledzenia list mailingowych.


2
Właściwie w przypadku powiadomień o oficjalnych pakietach, które będą wymagały ręcznych interwencji, polecam śledzenie arch-dev-public i arch-general .
HalosGhost

Ponadto @jasonwryan jest całkowicie poprawny. Może to pacmanbyć możliwe. Robienie tego z yaourtnie jest możliwe.
HalosGhost

yaourtfaktycznie wykonuje nieco lepszą robotę, niż pacman, jak myślę, masz na myśli, że jego domyślna konfiguracja jako niewiele więcej niż pomocnik aur prawie na pewno zrujnowałby rzeczy na dłuższą metę. Jest jednak wyjątkowo konfigurowalny i można go bardzo skutecznie utrzymywać drzewa źródłowe. Zarówno yaourti pacmantylko owinąć alpm.
mikeserv

Lub, jak sądzę, bardziej słuszne jest powiedzenie, yaourtzawijanie pacmani niektóre dodatkowe alpmfunkcje i pacmanzawijanie alpm. W każdym razie jednak się yaourtwydłuża pacman.
mikeserv

Jak wspomniano tutaj , -Syuwjest potencjalnie dość niebezpieczny. Ma możliwość tworzenia częściowych aktualizacji, jeśli aktualizacje nie zostaną zastosowane, a oprogramowanie zostanie później zainstalowane -S.
Sparhawk

1

Jest stary skrypt, który wykonuje naprawdę dobrą robotę; nazywa się to safepac .

EDYCJA: Ten skrypt jest nadal dostępny na github tutaj: https://github.com/bencahill/binfiles/blob/master/safepac

Co to robi i jak działa?

Zazwyczaj aktualizuję Archa: czytam wiadomości, a potem robię pacman -Syu, lub po prostu robię, pacman -Syua jeśli coś pójdzie nie tak, czytaj wiadomości. Teraz ten skrypt nie robi nic więcej: pobiera najnowsze wiadomości z kanału RSS, robi sedmagię i porównuje nazwy wszystkich pakietów, które mają aktualizacje dostępne dla wiadomości. Pasuje do „nazwa-pakietu” i „nazwa-pakietu-” w wiadomościach, a jeśli nazwa pakietu pojawi się gdzieś w wiadomościach, zignoruje pakiet i zaktualizuje tylko pozostałe. W ten sposób wszystko, co może pójść nie tak, zostanie odroczone, dopóki nie będzie czasu na ręczne zbadanie sprawy, a aktualizacje niekrytyczne zostaną wykonane automatycznie!

Zwykle po rozwiązaniu safepacproblemu ewentualnej nierównomiernej aktualizacji nie będziesz chciał ignorować określonego pakietu, ponieważ jest on nadal dostępny w wiadomościach. Po to jest lista ignorowanych. Dlatego za każdym razem, gdy aktualizujesz ręcznie, możesz dodać odpowiedni wpis wiadomości do listy ignorowanych za pomocą , gdzie jest numer wpisu wiadomości. Za pomocą przełącznika możesz również określić liczbę najnowszych wiadomości, które chcesz uwzględnić w analizie . Skrypt jest również wystarczająco inteligentny, aby pominąć nieistniejące wpisy. Jeśli napotkasz problemy z pakietami, które mają bardzo krótkie nazwy, które mogą arbitralnie pojawiać się w wiadomościach (np. „Tak”), możesz dodać je do białej listy , aby zawsze były instalowane, nawet jeśli pojawią się w wiadomościach.safepac -Ia xxxxxx-nsafepac -Wa

Należy pamiętać, że potrzebujesz działającej konfiguracji poczty, ponieważ ten skrypt wysyła również podsumowanie poczty (z pełnym dziennikiem?) Oraz z istotnymi częściami aktualizacji:

parsowanie danych pacmanwyjściowych w celu wyszukania tych słów i dodania ich do podsumowania:
„note” „pacnew” „error” „Ważne” „ostrzeżenie” „istnieje”.

Skrypt jest stary, ale pomysł jest dobry i prawdopodobnie nadal działa z niewielką aktualizacją, jeśli w ogóle.


Jednym z możliwych problemów jest poważna (lub zerwana) aktualizacja, o której nie ma w wiadomościach, ale trzeba ją śledzić samodzielnie. W tym przypadku aktualizacja z python2 do python3
Lesto

Nadal możesz użyć checkupdates (pacman-utils) i uzyskać listę pakietów, a następnie zdalnie dodać je do białej listy, dobrze, jeśli masz pulę, ale może lepiej jest skonfigurować coś w rodzaju lokalnego repo
Lesto

-2

Korzystam z własnej nieuleczalności, żeby prowadzić yaourtcrona.


1
Yaourt faktycznie nie żyje : to spektakularnie zły pomysł.
jasonwryan

Sam używałem yaourtprzez wiele lat. To było dobre narzędzie, ale rzeczy, które zbudowano w celu „zawinięcia”, zmieniły kształt i robi kilka rzeczy całkiem źle. W tym momencie jest to tak problematyczne, że autorzy narzędzia powiedzieli, że nawet nie używają go sami. Jeśli chcesz mieć pomocnika AUR, sugeruję wypróbowanie jednego z aktywnie utrzymywanych. Zmieniłem yaysię i jestem całkiem szczęśliwy.
Caleb

To narzędzie również działa yaydla mnie.
vadzim
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.