我正在尝试设置 crontab,以便它下载所有可用的软件包更新但不安装它们。不幸的是,它似乎没有运行。
我的 crontab 命令sudo crontab -e
:
1 */1 * * * sudo apt-get -d upgrade
这应该在每个小时的第一分钟出去并将所有可用的软件包下载到 /var/cache/apt/archives/。
当我从命令行手动运行该命令时,它按预期工作。
也许我使用 sudo 和 crontab 作为 root 时出了问题,我不知道。任何帮助都将不胜感激。
答案1
Apt 已经有此功能。
编辑文件/etc/apt/apt.conf.d/10periodic
找到条目:
APT::Periodic::Download-Upgradeable-Packages "0";
此条目告诉 apt 是否使用 apt 的--download-only
选项下载新软件包。“0”表示该选项被禁用,因此 apt 将安装它下载的软件包。
将“0”更改为其他数字以启用--download-only
。数字代表下载频率(以天为单位):1 表示每天,“2”表示每隔一天,“7”表示每周,等等。这些选项的文档位于文件中/usr/lib/apt/apt.systemd.daily
如果您想要提取所有可用软件包(而不仅仅是安全更新),那么您还必须对 进行小幅编辑/etc/apt/apt.conf.d/50unattended-upgrades
。取消注释您想要包含的源。不建议对 PPA 和其他非 Ubuntu 软件这样做,但如果您想冒险,这很容易做到。
答案2
第一种方法,运行sudo crontab -e
并添加/更改以下行:
1 * * * * /usr/bin/apt-get -d upgrade >/tmp/cronapt.log 2>&1
然后检查/tmp/cronapt.log
错误。
第二种方法是将以下 shell 脚本放入/etc/cron.hourly
文件夹中,并使其可执行并归 拥有root:root
:
#!/bin/bash
/usr/bin/apt-get -d upgrade