apt-get Upgrade 不通过 crontab 作业安装升级

apt-get Upgrade 不通过 crontab 作业安装升级

在检查了如何使用 crontab 自动更新后,我以 root 身份编辑了我的,添加了以下行:

00 11 * * * /usr/bin/apt-get upgrade -q -y >> /var/log/apt-upgrade.log

现在,如果我在几分钟后手动运行 apt-get Upgrade,它将显示它没有安装任何升级。该日志根本不报告任何错误,也不报告警告。这只是一个普通的列表

Reading package lists...
Building dependency tree...
Reading state information...
The following packages will be upgraded:
  binutils fontconfig fontconfig-config gnupg gpgv libcurl3
  libcurl4-openssl-dev libfontconfig1 libgcrypt11 libgcrypt11-dev libgd2-xpm
  libidn11 libidn11-dev libperl5.14 libpq5 libsqlite3-0 libssl-dev libssl-doc
  libssl1.0.0 libtiff4 linux-image-3.2.0-4-amd64 linux-libc-dev openjdk-7-jre
  openjdk-7-jre-headless openssh-client openssh-server openssl perl perl-base
  perl-modules ssh
31 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Need to get 0 B/93.7 MB of archives.
After this operation, 613 kB of additional disk space will be used.

我也尝试过其他事情(显然不是同时进行),但没有结果:

00 11 * * * apt-get upgrade -q -y >> /var/log/apt-upgrade.log
00 11 * * * root /usr/bin/apt-get upgrade -q -y >> /var/log/apt-upgrade.log
00 11 * * * apt-get upgrade -y >> /var/log/apt-upgrade.log

什么也没有发生,实际上没有安装任何升级。我究竟做错了什么?

答案1

你需要设置DEBIAN_FRONTEND=noninteractive.我似乎记得它有点难找到,因为它实际上是 的一个选项debconf,而不是apt-get。但是,提到了例如这里,当然在手册中debconf

因此,制作一个包含以下内容的脚本

#/bin/sh
DEBIAN_FRONTEND=noninteractive apt-get upgrade -q -y 

并从 cron 运行它。并记得也要跑步apt-get update

当然也许你应该使用unattended-upgrades或者专门为此设计的东西。

但我有一台 Debian 机器使用这个脚本,它工作正常:

#/bin/sh
apt-get -q -q  update 
if apt-get -s upgrade | grep -q "0 upgraded" ; then
        true
else
        DEBIAN_FRONTEND=noninteractive apt-get -y -q upgrade
fi

第一个apt-get -s是抑制输出和无用的电子邮件,以防没有任何内容可以升级。

相似的问题在阿斯库本图。

相关内容