Arch Linux에서 자동으로 업데이트를 책임감 있게 실행하려면 어떻게 해야 합니까?

Arch Linux에서 자동으로 업데이트를 책임감 있게 실행하려면 어떻게 해야 합니까?

저는 Arch Linux를 처음 접한 사람이고 여전히 일부 패러다임에 익숙해지고 있습니다. 나는 훨씬 더 구조화되고 어떤 면에서는 예측 가능한 다른 배포판의 많은 습관을 가지고 왔습니다.

몇 가지 시스템에 대해 제가 하고 싶은 한 가지는 cron 작업을 활성화하여 모든 시스템 패키지를 자동으로 업데이트하는 것입니다. 상황이 어떻게 진행되었는지 알려주는 시스템의 의미 있는 피드백을 원한다는 점을 제외하면 꽤 쉬울 것 같습니다. 너무 장황하지 않아서 시스템이 제대로 작동하는 것을 발견할 때까지 이를 무시하게 됩니다.

  • 전체 출력은 pacman불필요합니다. 다운로드에 시간이 얼마나 걸렸는지, 53개 중 46번째 업데이트인지는 상관하지 않습니다.
  • 대부분의 경우 나는 성공에 관심이 없습니다.
  • 나는 오류에 관심이 있습니다. 업데이트 실행이 실패하면 이에 대해 알고 싶고 특정 오류 메시지를 패치해야 합니다.
  • 설치 중에 제공되는 "알림"에 관심이 있습니다. 예를 들어 오늘의 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에 기록됩니다. 메시지의 형식은 매우 다양합니다. 전체 블록 앞에 어떤 방식으로든 들여쓰기가 붙는 경우도 있고, 에코된 문자열만 있는 경우도 있습니다.

시스템에 개입해야 하지만 다른 방법으로는 방해할 수 없는 사항에 대해 알고 싶습니다. 이 데이터를 지능적으로 관리하고 시스템 관리를 단순화하는 도구가 있습니까? 패키지를 설치하는 팩맨 프로세스와 별도로 패키지에서 생성된 출력을 얻을 수 있는 방법이 있습니까? 아니면 설치 로그에서 문제가 없는 항목을 필터링하는 일종의 파서를 직접 작성해야 합니까?

¹ 이것이 얼마나 어리석은 일인지 짚어보기 전에 저는 재난 발생 시 쉽게 복구할 수 있는 스냅샷 기반 전체 시스템 백업 없이는 프로덕션 서버에서 이 작업을 수행하지 않을 만큼 똑똑하다는 점을 참고하시기 바랍니다.

답변1

나는 당신과 이 스레드에서 일어날 수 있는 다른 사람 모두에게 명확하게 말하고 싶습니다. 당신이하고 싶은 일은~ 아니다가능한. 아치는 자신이 기대하는 사실을 비밀로 하지 않습니다.시스템을 관리합니다. 해당 책임의 일부가 업데이트 주기에 존재합니다.

이제단계책임감 있게 자동화할 수 있는 업데이트 프로세스가 있지만 결코 자동화된 -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. 0보다 큰 숫자가 반환되면 다운로드가 실행될 수 있습니다. 그러나 이는 -Syu귀하가 현장에 있고 업그레이드를 처리할 준비가 되었을 때 실행하는 것을 대체할 수는 없습니다.

질문의 마지막 부분인 업그레이드 중에 발생한 결과를 어디서 얻을 수 있는지 알아보려면 /var/log/pacman.log. 여기에는 관심을 가질 만한 모든 오류 정보가 포함되어 있습니다.


있다도구pacman이는 익숙하지 않은 사용자에게 좀 더 친근하게 다가가기 위한 것입니다 . 제가 착각한 것이 아니라면 수동 개입이 필요한 업데이트가 있는 경우 뉴스 항목에 대한 알림도 제공합니다.

이 도구는 단기적으로 여러분의 삶을 좀 더 단순하게 만들 수 있지만 메일링 리스트를 현명하고 부지런히 따르는 것을 결코 대체할 수는 없습니다.

답변2

정말 좋은 일을 하는 오래된 스크립트가 있습니다. 그것은이라고세이프팩.

편집: 이 스크립트는 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. 스크립트는 또한 존재하지 않는 항목을 건너뛸 만큼 똑똑합니다. 뉴스에 임의로 나타날 수 있는 매우 짧은 이름(예: "yes")을 가진 패키지에 문제가 있는 경우 해당 패키지를 화이트리스트에 추가하면 safepac -Wa뉴스에 나타나더라도 항상 설치됩니다.

이 스크립트는 또한 다이제스트 메일(전체 로그 포함)과 업데이트의 핵심 부분을 보내기 때문에 작업 메일 설정이 필요하다는 점에 유의하세요.

출력 을 구문 분석하여 "note" "pacnew" "error" "important" "warning" "exists" pacman라는 단어를 찾아 다이제스트에 추가합니다 .

스크립트는 오래되었지만 아이디어는 좋으며 사소한 업데이트가 있는 경우에도 여전히 작동할 수 있습니다.

답변3

나는 내 것을 사용한다때까지yaourtcron으로 실행합니다 .

관련 정보