내가 관리하는 데비안 서버는 약 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-upgrades
package는 매일 보안 업그레이드를 설치하고 (구성 가능), 업그레이드 할 패키지를 구성 할 수 있습니다. 다음을 사용하여 설치할 수 있습니다.
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
제안한 옵션 을 사용하는 경우 가 더 좋습니다.