78

Currently, to get things up to date on my Raspberry Pi, I have to type in sudo apt-get update and sudo apt-get upgrade. Is there a way to set it up to automatically do this? I am running Raspbian Jessie.

Isaac Corbrey
  • 887
  • 1
  • 7
  • 13

4 Answers4

74

Instead of a manual cron, you can install unattended-upgrades, which is useful to ensure the latest kernels are installed. It's mostly designed for security.

apt-get install unattended-upgrades

There are some bits that can be adjusted/configured, but the default is fine.

Isaac Corbrey
  • 887
  • 1
  • 7
  • 13
300D7309EF17
  • 1,394
  • 1
  • 11
  • 17
47

In its default configuration, unattended-upgrades is broken in Raspbian Buster. It won't install crucial updates for the kernel and other software. Your options are:

Recommended Option:

sudo apt install unattended-upgrades

echo 'Unattended-Upgrade::Origins-Pattern {
//      Fix missing Rasbian sources.
        "origin=Debian,codename=${distro_codename},label=Debian";
        "origin=Debian,codename=${distro_codename},label=Debian-Security";
        "origin=Raspbian,codename=${distro_codename},label=Raspbian";
        "origin=Raspberry Pi Foundation,codename=${distro_codename},label=Raspberry Pi Foundation";
};' | sudo tee /etc/apt/apt.conf.d/51unattended-upgrades-raspbian

For faster security updates (but less stability, as the packages haven't been approved for rasbian), you can add debian-security packages to apt:

echo 'deb http://deb.debian.org/debian-security/ buster/updates main contrib non-free' | sudo tee /etc/apt/sources.list.d/debian-security.list

You will probably need to install new apt keys for the debian repository.

Other Options:

  • Work around it with by using cron-apt: sudo apt install cron-apt

It's recommended to use unattended-updates and fix the package, because it's best suited for the purpose. Cron-apt is your second-best option, because it's also designed for a similar purpose. I'm not sure cron-apt can automatically reboot your system after a kernel update. Unattended-upgrades has that option, and in my experience reboot after kernel upgrade works with the fix above.

Dej
  • 606
  • 5
  • 5
32

Tasks can be automated using the cron utility.

To setup cron to update apt, in a terminal type:

sudo su

to access a root-level prompt. Then, run:

crontab -e

to begin editing your crontab, a table of tasks to run automatically at a given time. It will open in your preferred text editor. Modify it to include the following line:

0 7 * * 1 apt update && apt upgrade -y

This will tell the system to automatically update and upgrade your apps at 7AM every Monday. After saving and exiting, it is now activated, no further actions. Read-up on crontab to see how to adjust to your liking.

Note time trigger "0 7 * * 1" translates to 0 hours past 7 every day of every month that is a Monday. To help with changing the trigger, you can use https://cron.help.

Fred
  • 4,592
  • 19
  • 29
7

You can install and configure cron-apt. Install it by doing the following:

apt-get install cron-apt

the main configuration file is /etc/cron-apt/config

One thing I add to my configuration is:

MAILON="always"

this will send an email every time it runs, not only if it encounters an error.

Note that the default setup will not automatically install the updates (there are some good reasons to not do this), but you can config it to do so. One advantage this program provides over a simple cron solution is that it gives you control over what gets installed (only download new packages, install security updates or install all updates).

To set the time it runs edit the /etc/cron.d/cron-apt file.

You can find more info and config options here

The package includes very good documentation, however it is gzipped. To extract the file:

  1. create a directory to work in - mkdir cron-apt_documentation
  2. change to the new directory - cd cron-apt_documentation
  3. copy the compressed file - cp /usr/share/doc/cron-apt/README.gz . (note the trailing dot)
  4. uncompress the file - gunzip README.gz
  5. read the file - cat README | less
Steve Robillard
  • 34,988
  • 18
  • 106
  • 110