我管理着大约7台Debian服务器,我想将它们设置为自动更新。因此,我这样创建了一个脚本:
#!/bin/sh
apt-get update
apt-get upgrade
并将其放在root
的crontab列表中。不幸的是,它始终挂在“升级”部分,询问我是否确定要升级。因为这是一项Cron工作,所以直到它通过电子邮件发送给我说失败了之后,我才能看到输出。有没有办法让它跳过该提示,而只是自动进行升级?
我管理着大约7台Debian服务器,我想将它们设置为自动更新。因此,我这样创建了一个脚本:
#!/bin/sh
apt-get update
apt-get upgrade
并将其放在root
的crontab列表中。不幸的是,它始终挂在“升级”部分,询问我是否确定要升级。因为这是一项Cron工作,所以直到它通过电子邮件发送给我说失败了之后,我才能看到输出。有没有办法让它跳过该提示,而只是自动进行升级?
Answers:
使用-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 env变量
DEBIAN_FRONTEND=noninteractive apt-get -y upgrade
DEBIAN_FRONTEND
办?它也用于其他过程吗?
man 7 debconf
;)
man 7 debconf
了一下,但一无所获。现在我知道为什么了:)
好吧,也许您使用的是错误的工具。unattended-upgrades
软件包每天安装安全升级(可以配置),您可以配置要升级或不升级的软件包等。可以使用以下方式安装:
sudo apt-get install unattended-upgrades
来自man unattended-upgrades
:
通过apt配置机制完成配置。可以在/etc/apt/apt.conf.d/50unattended-upgrades中找到默认配置文件。
/etc/apt/apt.conf.d/
但仅Unattended-Upgrade::
解析以开头的配置。
尽管先前的答案是有益的,但它们并未绕过期间人为要求的输入的“问题” 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
。
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
!的调用。
归功于Remy van Elst!谢谢!
root
- 运行的,因此您完全不需要使用sudo
。“其他选项”在任何情况下均设置为无人值守运行。请参阅参考man
页。
这类工具的通用工具是yes
:
DESCRIPTION
Repeatedly output a line with all specified STRING(s), or 'y'.
因此,例如,您可以
yes | sudo apt-get upgrade
请注意,在特定情况下,apt-get upgrade
使用@Braiam或@ArthurUlfeldt建议的选项更好。
apt-get update && yes | apt-get upgrade
(我们的服务器不应该使用sudo
...不要问...)