禁用Ubuntu 18.04的自动更新功能

我正在运行一个Ubuntu 18.04服务器,尝试禁用所有的更新和升级,但对于具体要做什么还不太确定。 忽略与此相关的安全性问题,我应该如何通过命令行禁用Ubuntu 18.04、MySQL、Apache和PHP的自动更新?
据我所知,当我在Ubuntu上禁用自动更新/软件包列表更新时,MySQL、Apache和PHP不应该自动更新,这是正确的吗?
对于Ubuntu来说,我只找到了位于/etc/apt/apt.conf.d/10periodic的一些内容:
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Download-Upgradeable-Packages "0";
APT::Periodic::AutocleanInterval "0";

我会将其设置为0。

APT::Periodic::Update-Package-Lists "1"; 设置为0基本上使得任何软件包/软件(例如MySQL Apache和PHP)无法更新,对吗?

而在/etc/apt/apt.conf.d/50unattended-upgrades中:

Unattended-Upgrade::Allowed-Origins {
          "${distro_id}:${distro_codename}";
          "${distro_id}:${distro_codename}-security";
          "${distro_id}ESM:${distro_codename}";
//        "${distro_id}:${distro_codename}-updates";
//        "${distro_id}:${distro_codename}-proposed";
//        "${distro_id}:${distro_codename}-backports";
};

在这里,我只会注释掉第2-4行。
还有其他需要做的事情吗?或者之后所有的自动更新/升级都被禁用了吗?

你尝试过 sudo apt-get purge update-manager update-notifier 吗?这应该会停止所有你不手动更新的更新。 - xiota
未来读者:Ubuntu中无人值守升级的主要目的是确保安全性,当然也可以用于其他目的。 - user535733
5个回答

根据文档所说,需要在/etc/apt/apt.conf.d/20auto-upgrades中更新设置。因此,我也会将这些设置更新为"0"
APT::Periodic::Update-Package-Lists "0";
APT::Periodic::Unattended-Upgrade "0";

但为了确保万无一失,你仍然可以编辑/etc/apt/apt.conf.d/10periodic并将以下设置更新为"0"
APT::Periodic::Update-Package-Lists "0";
APT::Periodic::Download-Upgradeable-Packages "0";
APT::Periodic::AutocleanInterval "0";

一旦您完成了上述更新,APT管理的所有软件包都将不会自动更新,包括MySQL、Apache和PHP。
APT::Periodic::Update-Package-Lists设置为"0"也是可以的,因为您仍然可以使用sudo apt update手动更新软件包列表,并使用sudo apt upgrade手动更新软件包。
您不需要对/etc/apt/apt.conf.d/50unattended-upgrades进行任何更新。
您可能还想要disable snap packages from auto-updating,但是由于MySQL、Apache和PHP通常由APT管理,所以如果您只关心这些软件包不被自动更新,这可能是不必要的。
重要提示:禁用自动更新也意味着您将无法接收到系统的重要安全更新,所以除非您经常更新软件包,否则最好保持自动更新功能开启。

从cron任务中删除更新。
我在我的Ubuntu 18.04上找到了2个文件:
/etc/cron.daily/update-notifier-common 
/etc/cron.weekly/update-notifier-common

删除这些文件或注释文件内容

根据您所做的更改,应该禁用自动升级。
为了确认,请在 /var/lib/apt/periodic/ 目录下观察几天。
$ ls -l /var/lib/apt/periodic/
total 0
-rw-r--r-- 1 root root 0 Aug 20 16:58 download-upgradeable-stamp
-rw-r--r-- 1 root root 0 Aug 21 06:56 unattended-upgrades-stamp
-rw-r--r-- 1 root root 0 Aug 20 16:58 update-stamp
-rw-r--r-- 1 root root 0 Aug 20 07:06 update-success-stamp
-rw-r--r-- 1 root root 0 Aug 21 06:56 upgrade-stamp

未经监督的升级戳记应该停止每天递增。

或者,您可以卸载unattended-upgrades软件包。如果您改变主意,只需重新安装即可。

此外,您必须冻结您的快照软件包,这些软件包不是基于deb的,因此不使用apt也不使用未经监督的升级。有关快照,请参阅如何停止snapd自动更新?


会注意这个的,谢谢。还有其他可能自动更新操作系统和/或数据包的东西吗? - user49201843

截至Ubuntu 20.04(也可能适用于18.04,不确定),禁用此功能的首选方法是使用dpkg-reconfigure命令:
sudo dpkg-reconfigure -plow unattended-upgrades

选择“否”以回答提示。

enter image description here


如果您只想阻止某些软件包的更新,比如Apache和PHP,您可能需要查看apt-pinning或apt-hold。这些工具允许保留程序/软件包的特定版本,即使有新版本可用。请参阅Ubuntu Wiki中的PinningHowto