Ubuntu has automatic updates enabled by default. Ordinarily, this is a convenient feature that helps our system stay up to date with the latest features, and protected with the newest security patches. However, on test systems or in edge cases, it can just be plain annoying.
In this article, we’ll show you how to disable automatic updates in Ubuntu. This can be done from either GUI or command line, and we’ll show you both methods in this guide.
Personally, we prefer to disable automatic updates on test machines in order to prevent the
could not get lock error, which is caused by trying to use the package manager to install software when the system is already using the process to check for updates.
Disable Automatic Updates via GUI
1. First, open up the “Software & Updates” utility.
2. Head over to the “updates” tab and change the “automatically check for updates” option to never. Once you’ve made the changes, you can close this window.
Disable Automatic Updates via Command Line
1. Update preferences are stored in the
/etc/apt/apt.conf.d/20auto-upgrades file. Open it with nano or your favorite text editor to make some changes to it.
$ sudo nano /etc/apt/apt.conf.d/20auto-upgrades
2. To disable automatic updates completely, make sure all these directives are set to “0”. When done, save your changes and exit the file.
APT::Periodic::Update-Package-Lists "0"; APT::Periodic::Download-Upgradeable-Packages "0"; APT::Periodic::AutocleanInterval "0"; APT::Periodic::Unattended-Upgrade "0";
That’s all there is to it. Now you won’t need to worry about Ubuntu holding the apt package manager hostage when you try to use it. Upgrades and package downloads are now under your complete control, so don’t forget to manually update your system every once in a while.
Remove unattended-upgrades Package
It’s also possible to remove the
unattended-upgrades package completely from your system. This is only recommended for system administrators who have a strong understanding of the risks involved.
$ sudo apt purge --auto-remove unattended-upgrades
And then disable the system upgrade timers left behind.
$ sudo systemctl disable apt-daily-upgrade.timer $ sudo systemctl mask apt-daily-upgrade.service $ sudo systemctl disable apt-daily.timer $ sudo systemctl mask apt-daily.service
Disable Snap Updates
By default, the Snap package manager on Ubuntu will check for updates 4 times per day. Snap calls these updates a “refresh,” but they are essentially an update check which will upgrade your Snap packages in the background.
To see this on your own system, you can run the following command.
$ snap refresh --time timer: 00:00~24:00/4 last: yesterday at 22:29 EDT next: today at 04:10 EDT
The output above shows that
snapd is configured to check for updates 4 times each day, and also shows the last time it checked for updates, and when it plans to check for updates again.
There’s no official command to permanently disable Snap updates. But we still have a few options to disable Snap refreshes/updates, as you’ll see below.
Option 1. If you’re not actually using the Snap package manager, then you can just remove it from your system completely, which will obviously stop any updates as well.
$ sudo apt purge --auto-remove snapd
Option 2. Stop the
snapd service from running on Ubuntu by configuring
systemd with the following commands.
$ sudo systemctl stop snapd.service $ sudo systemctl stop snapd.socket
If you want to make sure these changes persist after a reboot, you’ll need to also disable the services by running the commands below.
$ sudo systemctl mask snapd.service $ sudo systemctl mask snapd.socket
If at any point you need to revert these changes, and check for Snap updates, run these commands.
$ sudo systemctl unmask snapd.service $ sudo systemctl unmask snapd.socket $ sudo systemctl start snapd.service $ sudo snap refresh
Option 3. We can edit the
/etc/hosts file to block network access to the Snap store. Snap will try to check for updates in the background, but it will always be unsuccessful until this line is removed.
$ sudo echo "127.0.0.1 api.snapcraft.io" >> /etc/hosts