Tec*_*son 5 update-manager bash scripts
我正在创建一个 BASH 脚本,除其他外,该脚本将启用自动更新、重要的安全更新以及软件更新菜单中的“每日检查”选项。但无论我在哪里寻找,我都找不到答案。据我所知,唯一的方法是通过 GUI。无论如何,我想念这个吗?
编辑1:通过更多的研究,我已经弄清楚如何使用这段代码启用重要的安全更新和推荐的更新:
find /etc/apt -type f -name '*.list' -exec sed -i 's/^#\(deb.*-backports.*\)/\1/; s/^#\(deb.*-updates.*\)/\1/; s/^#\(deb.*-proposed.*\)/\1/; s/^#\(deb.*-security.*\)/\1/' {} +
Run Code Online (Sandbox Code Playgroud)
所有 Ubuntu 版本 16.04 及更高版本中默认启用无人值守升级。
有三种简单的方法可以判断unattended-upgrades软件包是否已安装并正常工作。
查看该软件包是否已安装。在输出底行末尾查找“[installed]”。
$ apt list unattended-upgrades
Listing... Done
unattended-upgrades/cosmic-updates,cosmic-updates,now 1.5ubuntu3.18.10.1 all [installed]
Run Code Online (Sandbox Code Playgroud)
检查无人值守升级活动的apt 时间戳。查找过去一两天内无人值守升级的时间戳:
$ ls -la /var/lib/apt/periodic/
total 8
drwxr-xr-x 2 root root 4096 Sep 15 2017 .
drwxr-xr-x 5 root root 4096 Jan 1 08:24 ..
-rw-r--r-- 1 root root 0 Jan 10 07:54 download-upgradeable-stamp
-rw-r--r-- 1 root root 0 Jan 10 07:51 unattended-upgrades-stamp
-rw-r--r-- 1 root root 0 Jan 10 07:52 update-stamp
-rw-r--r-- 1 root root 0 Jan 10 07:53 update-success-stamp
-rw-r--r-- 1 root root 0 Jan 10 07:55 upgrade-stamp
Run Code Online (Sandbox Code Playgroud)
检查 apt 设置以查看无人值守升级是否打开(“1”)或关闭(“0”):
$ grep Unattended-Upgrade /etc/apt/apt.conf.d/20auto-upgrades
APT::Periodic::Unattended-Upgrade "1";
Run Code Online (Sandbox Code Playgroud)
/etc/apt/apt.conf.d/50unattended-upgrade 中列出了无人值守升级使用的存储库。
如果安装并打开了无人值守升级,无论您是否愿意,它都会每天运行。只有 GUI 提供了更改周期的选项。
进行更改后,无需重新启动系统。Apt 每天随机运行一次,并且每次都会重新加载配置和源。
如果您正在使用该unattended-upgrades软件包并且它已经安装,那么根据Ubuntu 社区帮助 Wiki 上的 AutomaticSecurityUpdates(仅供参考,它还有有关使用 GNOME 更新管理器、cron 和 aptitude 以及 cron-apt 的信息):
确定当前配置
可以通过运行以下命令来查询当前配置:
Run Code Online (Sandbox Code Playgroud)apt-config dump APT::Periodic::Unattended-Upgrade这将产生如下输出:
Run Code Online (Sandbox Code Playgroud)APT::Periodic::Unattended-Upgrade "1";在此示例中,无人值守升级将每 1 天运行一次。如果数字为“0”,则无人值守升级被禁用。
/etc/apt/apt.conf.d/ 中的文件按字典顺序进行评估,每个文件都能够覆盖早期文件中设置的值。这使得无法查看 /etc/apt/apt.conf.d/20auto-upgrades 中的设置以及为什么建议使用 apt-config。
要启用它,请执行以下操作:
Run Code Online (Sandbox Code Playgroud)sudo dpkg-reconfigure --priority=low unattended-upgrades(这是一个交互式对话框)这将创建
/etc/apt/apt.conf.d/50unattended-upgrades. 并/etc/apt/apt.conf.d/20auto-upgrades具有以下内容:Run Code Online (Sandbox Code Playgroud)APT::Periodic::Update-Package-Lists "1"; APT::Periodic::Unattended-Upgrade "1";有关这些值含义的详细信息可以在 /etc/cron.daily/apt 文件的标头中找到。
如果您绝对确定不会错过任何其他dpkg-reconfigure内容(我不确定上面是否是详尽的列表),您可以创建/编辑上述文件。
或者代替上面的内容,根据Debian wiki 上的 UnattendedUpgrades:
通过 /etc/apt/apt.conf.d/02periodic 自动调用
或者,您还可以创建 apt 配置文件
/etc/apt/apt.conf.d/02periodic来激活无人值守升级:下面是 /etc/apt/apt.conf.d/02periodic 的示例:
Run Code Online (Sandbox Code Playgroud)// Control parameters for cron jobs by /etc/cron.daily/apt-compat // // Enable the update/upgrade script (0=disable) APT::Periodic::Enable "1"; // Do "apt-get update" automatically every n-days (0=disable) APT::Periodic::Update-Package-Lists "1"; // Do "apt-get upgrade --download-only" every n-days (0=disable) APT::Periodic::Download-Upgradeable-Packages "1"; // Run the "unattended-upgrade" security upgrade script // every n-days (0=disabled) // Requires the package "unattended-upgrades" and will write // a log in /var/log/unattended-upgrades APT::Periodic::Unattended-Upgrade "1"; // Do "apt-get autoclean" every n-days (0=disable) APT::Periodic::AutocleanInterval "21"; // Send report mail to root // 0: no report (or null string) // 1: progress report (actually any string) // 2: + command outputs (remove -qq, remove 2>/dev/null, add -d) // 3: + trace on APT::Periodic::Verbose "2";
手动运行(用于调试)
为了帮助调试,您可能需要手动运行无人值守升级:
Run Code Online (Sandbox Code Playgroud)sudo unattended-upgrade -d也可以看看
- /usr/share/doc/无人值守升级/README.md.gz
- /usr/share/doc/apt/examples/configure-index.gz
- /etc/cron.daily/apt
- apt.conf(5)
另外,您可能感兴趣的更多信息:
相关系统文件
因为 Debian 使用 systemd 系统,所以它定义了 APT 使用的计时器,这些文件由 apt 软件包提供。
相关文件是:
- 用于下载:
/lib/systemd/system/apt-daily.timer
- 覆盖与
/etc/systemd/system/apt-daily.timer.d/override.conf- 用于升级:
/lib/systemd/system/apt-daily-upgrade.timer
- 覆盖与
/etc/systemd/system/apt-daily-upgrade.d/override.conf您可以使用本地覆盖文件覆盖这些设置,如上所示,创建缺失的部分(如果尚不存在)。
以下是如何使用以下命令将下载时间覆盖为凌晨 1 点的示例
/etc/systemd/system/apt-daily.timer.d/override.conf:Run Code Online (Sandbox Code Playgroud)[Timer] OnCalendar= OnCalendar=01:00需要上面的第 2 行来重置(清空)下面第 5 行中显示的默认值。
默认值
/lib/systemd/system/apt-daily.timer是(在撰写本文时):Run Code Online (Sandbox Code Playgroud)[Unit] Description=Daily apt download activities [Timer] OnCalendar=*-*-* 6,18:00 RandomizedDelaySec=12h Persistent=true [Install] WantedBy=timers.target
| 归档时间: |
|
| 查看次数: |
5075 次 |
| 最近记录: |