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


15

나는 아치 리눅스에 약간의 새로운 이민자이며 여전히 그 패러다임에 익숙해 져있다. 나는 다른 배포판에서 많은 구조를 가지고 있으며 좀 더 구조화되고 어떤 방식으로 예측할 수 있습니다.

몇 대의 시스템으로하고 싶은 한 가지 ¹는 cron 작업이 모든 시스템 패키지를 자동으로 업데이트 할 수 있도록하는 것입니다. 시스템에서 작동하는 것을 발견 할 때까지 무시할 정도로 장황하지 않은 방법을 알려주는 시스템의 의미있는 피드백을 원한다는 점을 제외하고는 꽤 쉬운 것처럼 보입니다.

  • 전체 출력 pacman이 필요하지 않습니다. 다운로드 시간이 오래 걸리거나 업데이트 중 46/53인지는 중요하지 않습니다.
  • 대부분의 경우 나는 성공에 관심이 없습니다.
  • 오류가 걱정됩니다. 업데이트 실행이 실패하면 이에 대해 알고 싶습니다. 특정 오류 메시지를 패치해야합니다.
  • 설치 중에 제공되는 "주의 사항"에 관심이 있습니다. 예를 들어 오늘의 시스템 업데이트는 다음과 같이 말했습니다.

    :: 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질문과 개념 모델에서 태그를 제거하는 것 입니다. 공식 repos를 사용 하여이 작업을 수행하는 것은 충분히 어려울 수 있습니다 .AUR에서 임의의 패키지를 믹스에 추가하면 빠른 속도로 만들어집니다 ...
jasonwryan

아, 그리고 이것은 바보 같은 생각이 아닙니다. 그러나 그것은 아치가 작동하는 방식에 대해 매우 밀어 붙입니다. 하루에 한 번 사용 checkupdates하고 -Syu노래하는 것은 매우 사소한 작업입니다. 귀하의 제안에 수반되는 모든 작업에 대한 실질적인 이점은 없습니다.
jasonwryan

@jasonwryan 나는 그것을 확장하려고했지만 실제로 동일한 워크 플로우에 맞추고 싶은 AUR 패키지가 있습니다. 저는 현재 yaourt를 광범위하게 사용하고 있으며 패키지 관리 작업에 대한 건식 지원이 없다는 사실을 그리워합니다. : /
Caleb

2
아치의 DNA는 당신의 손을 더럽 히고 있습니다 : 이것은 그것이 의도 된 방식이 아닙니다. 당신은 거기에 갈지도 모르지만, 그것은 Pyrrhic의 승리가 될 것이며, 여기에 문서화되어 있다면 절벽의 가장자리로 많은 초보자들을 이끌 것입니다.
jasonwryan

2
나는 작년에 오랜 시간을 보냈고 정기적으로 시스템을 죽이지 않고 업그레이드를 달성하는 유일한 방법은 새로운 이미지 (아치에서 기본 테스트 포인트이며보다 신뢰할 수있는 것으로 보인다)를 구축 한 다음 구성으로 서비스를 이식하는 것이라고 결론에 도달했습니다 관리 도구. 업데이트가 약간 중단되었을 수도 있지만 6 개월 동안 수동 개입없이 시스템을 중단시키는 3-4 건이있었습니다.
Matt

답변:


11

나는 당신 과이 스레드에서 발생할 수있는 다른 사람 모두에게 명확하고 싶습니다. 당신이하고 싶은 것은 불가능 합니다. 아치는 기대하고 있다는 사실을 비밀하지 않습니다 당신이 시스템을 관리 할 수 있습니다. 업데이트주기에 대한 책임 중 일부가 있습니다.

이제 책임감있게 자동화 할 수있는 업데이트 프로세스 단계 가 있지만 자동화되지 않습니다 -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
실제로 수동 개입이 필요한 공식 패키지에 대한 통지는 arch-dev-publicarch-general 을 따르는 것이 좋습니다 .
HalosGhost

또한 @jasonwryan은 완전히 정확합니다. 이 작업을 수행하는 pacman것이 가능할 수 있습니다. 함께하는 yaourt것은 가능하지 않습니다.
HalosGhost 2016 년

yaourt실제로 이상이의 약간 더 나은 일을 pacman내가 당신 말은 생각과 같은 AUR 도우미보다 조금 더 같이하지만, 기본 구성을 것 거의 확실히 장기적으로 난파선 것. 그러나 매우 구성 가능하며 소스 트리를 매우 효과적으로 유지 관리 할 수 ​​있습니다. 모두 yaourtpacman단지 포장 alpm어쨌든.
mikeserv

또는 yaourtpacman과 추가 alpm기능 및 pacman랩 을 말하는 것이 더 낫습니다 alpm. 어쨌든 yaourt확장 pacman합니다.
mikeserv 2016 년

언급 한 바와 같이 여기에 , -Syuw잠재적으로 아주 위험하다. 업데이트가 적용되지 않고 소프트웨어를 나중에 설치하면 부분 업데이트를 생성 할 수 있습니다 -S.
Sparhawk

1

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

편집 :이 스크립트는 여전히 github에서 사용할 수 있습니다 : https://github.com/bencahill/binfiles/blob/master/safepac

그것은 무엇을하고 어떻게 작동합니까?

나는 보통 아치를 업데이트하는 방법은 뉴스를 읽고 다음을 수행하는 것입니다 pacman -Syu, 아니면 그냥 할 pacman -Syu아무것도 잘못되면, 뉴스를 읽어보십시오. 이제이 스크립트는 다른 작업을 수행하지 않습니다. RSS 피드에서 최신 뉴스 항목을 가져옵니다.sed 마술을 수행하며 뉴스에 사용 가능한 업데이트가있는 모든 패키지의 이름을 비교합니다. 뉴스에서 "package-name"및 "package-name-"과 일치하며 뉴스에서 어딘가에 패키지 이름이 표시되면 패키지를 무시하고 다른 모든 패키지 만 업데이트합니다. 이런 식으로, 잘못 될 수있는 모든 것은 문제를 직접 검사 할 시간이 될 때까지 연기되는 반면 중요하지 않은 업데이트는 자동으로 수행됩니다!

일반적으로 원활하지 않은 업데이트를 처리 한 후에는 safepac특정 패키지가 아직 뉴스에 있으므로 무시 하지 않으려 고합니다 . 이것이 무시 목록의 목적입니다. 따라서 수동으로 업데이트 할 때마다을 사용하여 해당 뉴스 항목을 무시 목록에 추가 할 수 있습니다. 여기서 뉴스 항목의 번호는 다음과 같습니다. 스위치 와의 구문 분석에 포함 할 최신 뉴스 수를 지정할 수도 있습니다 . 이 스크립트는 또한 존재하지 않는 항목을 건너 뛰기에 충분합니다. 뉴스에 임의로 나타날 수있는 매우 짧은 이름의 패키지 (예 : "예")에 문제가 발생하면 화이트리스트에 추가 하여 뉴스에 표시 되더라도 항상 설치되도록 할 수 있습니다 .safepac -Ia xxxxxx-nsafepac -Wa

이 스크립트는 다이제스트 메일 (전체 로그 포함)과 업데이트의 두드러진 부분을 전송하므로 작동중인 메일 설정이 필요합니다.

"note" "pacnew" "error" "important" "warning" "exists"라는 pacman단어를 찾아서 요약에 추가하기 위해 출력을 구문 분석
합니다.

스크립트는 오래되었지만 아이디어는 좋으며 아마도 사소한 업데이트로 작동 할 수도 있습니다.


하나의 가능한 문제는 뉴스에서 주요 (또는 최신) 업데이트가 들리지 않지만 직접 추적해야한다는 것입니다. 예를 들어, python2에서 python3으로 업데이트
Lesto

그래도 checkupdates (pacman-utils)를 사용하여 패키지 목록을 가져온 다음 원격으로 화이트리스트에 올릴 수 있습니다. 풀이있는 경우에는 좋지만 로컬
리포지토리

-2

나는 cron 이 운영 할 때까지 내 자신의 성향 을 사용합니다 yaourt.


1
야우 르트 는 사실상 죽었다 : 이것은 대단히 나쁜 생각이다.
jasonwryan

나는 yaourt몇 년 동안 나 자신을 사용 했다. 좋은 도구 였지만, "포장"하기 위해 만들어진 것들의 모양이 바뀌었고 지금은 몇 가지 잘못되었습니다. 이 시점에서 도구 작성자가 더 이상 도구를 더 이상 사용하지 않는다고 말한 것은 문제가 많습니다. AUR 도우미를 원한다면 적극적으로 유지 관리되는 도우미 중 하나를 사용해보십시오. 나는 yay나 자신으로 전환하고 매우 행복하다.
Caleb

그 유틸리티는 yay저에게도 잘 어울립니다.
vadzim
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.