apt-get 업데이트 및 업그레이드를 자동화되고 무인화합니다.

apt-get 업데이트 및 업그레이드를 자동화되고 무인화합니다.

저는 약 7개의 Debian 서버를 관리하고 있으며 자동으로 업데이트되도록 설정하고 싶습니다. 그래서 다음과 같은 스크립트를 만들었습니다.

#!/bin/sh
apt-get update
apt-get upgrade

root그리고 crontab 목록 에 넣으세요 . 불행하게도 업그레이드 섹션에서 계속해서 업그레이드할 것인지 묻는 질문이 계속 표시됩니다. 이것은 크론 작업이기 때문에 이메일을 통해 실패했음을 알릴 때까지 출력을 볼 수 없습니다. 이 메시지를 건너뛰고 자동으로 업그레이드할 수 있는 방법이 있나요?

답변1

묻지 않으려면 apt-get의 -y 옵션을 사용하십시오. 에서 man apt-get:

   -y, --yes, --assume-yes
       Automatic yes to prompts; assume "yes" as answer to all prompts and
       run non-interactively. If an undesirable situation, such as
       changing a held package, trying to install a unauthenticated
       package or removing an essential package occurs then apt-get will
       abort. Configuration Item: APT::Get::Assume-Yes.

DEBIAN_FRONTEND 환경 변수를 설정할 수도 있습니다.

DEBIAN_FRONTEND=noninteractive apt-get -y upgrade

답변2

글쎄요, 어쩌면 잘못된 도구를 사용하고 있는 것일 수도 있습니다. unattended-upgrades패키지는 매일 보안 업그레이드를 설치하며(구성 가능), 업그레이드할 패키지 또는 업그레이드하지 않을 패키지 등을 구성할 수 있습니다. 다음을 사용하여 설치할 수 있습니다.

sudo apt-get install unattended-upgrades

에서 man unattended-upgrades:

구성은 적절한 구성 메커니즘을 통해 수행됩니다. 기본 구성 파일은 /etc/apt/apt.conf.d/50unattended-upgrades에서 찾을 수 있습니다.

답변3

이전 답변은 유익하지만 프로세스 중에 인간의 수단에 필요한 입력 문제를 회피하지 않습니다 upgrade. 그래서 나는 다음을 사용하고 있습니다 :

export DEBIAN_FRONTEND=noninteractive
export DEBIAN_PRIORITY=critical
sudo -E apt-get -qy update
sudo -E apt-get -qy -o "Dpkg::Options::=--force-confdef" -o "Dpkg::Options::=--force-confold" upgrade
sudo -E apt-get -qy autoclean

"배포" 업그레이드(예: 커널)를 포함하려면 이 dist-upgrade명령을 사용하십시오.

보다매뉴얼 페이지dpkg이러한 매개변수에 대한 자세한 정보입니다.

중요한 팁: 통화 sudo포함-E필수 매개변수:

Indicates to the security policy that the user wishes to preserve their existing environment variables. The security policy may return an error if the user does not have permission to preserve the environment.

그렇지 않으면 이 EXPORT명령문은 아무런 효과가 없습니다 apt-get!

신용은 다음과 같습니다레미 반 엘스트! 감사해요!

답변4

그의 게시물에 대해 @diegocn에게 감사드립니다.GitHub 문제, 대화형 기능을 비활성화하는 다음 명령을 찾았습니다.

echo 'debconf debconf/frontend select Noninteractive' | sudo debconf-set-selections

debconf-set-selectionsdebconf 데이터베이스에 답변을 추가하거나 데이터베이스에서 답변을 변경하는 데 사용할 수 있습니다. 각 질문은 debconf가 대화식으로 질문하는 것을 방지하기 위해 표시되도록 표시됩니다.

경고하다

이 명령은 설치될 또는 이미 설치된 패키지에 대한 debconf 값을 시드하는 데에만 사용하십시오. 그렇지 않으면 제거되지 않은 데이터베이스의 패키지 값이 남게 되거나 공유 값과 관련된 더 심각한 문제가 발생할 수 있습니다. 원본 머신에 동일한 설치가 있는 경우에만 데이터베이스를 시드하는 데 사용하는 것이 좋습니다.

debconf-set-selections.

관련 정보