apt-get 업데이트 및 업그레이드 자동화 및 무인 만들기 업그레이드 섹션에 매달리고 업그레이드 할 것인지 묻습니다.

내가 관리하는 데비안 서버는 약 7 대이며 자동으로 업데이트되도록 설정하고 싶습니다. 그래서 다음과 같이 스크립트를 만들었습니다.

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

root의 crontab 목록 에 배치했습니다 . 불행히도 항상 업그레이드 섹션에 매달리고 업그레이드 할 것인지 묻습니다. 그것은 크론 작업이기 때문에 실패했다는 이메일을 보낼 때까지 출력을 볼 수 없습니다. 해당 프롬프트를 건너 뛰고 업그레이드를 자동으로 수행하는 방법이 있습니까?



답변

-y 옵션을 사용하여 요청하지 않도록 apt-get하십시오. 보낸 사람 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 env 변수를 설정할 수도 있습니다

DEBIAN_FRONTEND=noninteractive apt-get -y upgrade

답변

글쎄, 당신은 잘못된 도구를 사용하고 있습니다. unattended-upgradespackage는 매일 보안 업그레이드를 설치하고 (구성 가능), 업그레이드 할 패키지를 구성 할 수 있습니다. 다음을 사용하여 설치할 수 있습니다.

sudo apt-get install unattended-upgrades

보낸 사람 man unattended-upgrades:

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


답변

이전의 답변은 유익하지만 그들은 인간의 수단으로 요구되는 입력의 ‘문제’를 우회하지 않습니다 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명령을 사용하십시오 .

이 매개 변수에 대한 자세한 내용은 Manpgagedpkg 를 참조하십시오 .

importat note : 매개 변수를 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!

신용은 레미 반 엘 스트 에게 간다 ! 감사!


답변

이런 종류의 일반적인 도구는 yes다음과 같습니다.

DESCRIPTION
       Repeatedly output a line with all specified STRING(s), or 'y'.

예를 들어, 당신은 할 수 있습니다

yes | sudo apt-get upgrade

@Braiam 또는 @ArthurUlfeldt에서apt-get upgrade 제안한 옵션 을 사용하는 경우 가 더 좋습니다.