Как настроить мой Raspberry Pi на автоматическое обновление / обновление?

34

В настоящее время, чтобы получить информацию о моем Raspberry Pi, я должен ввести sudo apt-get updateи sudo apt-get upgrade. Есть ли способ настроить его на автоматическое выполнение этого? Я бегу Распбиан Джесси.

Исаак Корбри
источник

Ответы:

47

вместо ручного cron вы можете установить unattended-upgrades, что полезно для установки последних версий ядер. Он в основном предназначен для безопасности.

https://wiki.debian.org/UnattendedUpgrades

apt-get install unattended-upgrades

Есть некоторые биты, которые можно отрегулировать / настроить, но по умолчанию это нормально.

tedder42
источник
5
Для меня по умолчанию не было хорошо. Он ничего не делал: /var/log/unattended-upgrades/unattended-upgrades.logфайл сообщался Allowed origins are: []поэтому в основном это не тянуло никаких обновлений в конце обновления. /etc/apt/apt.conf.d/50unattended-upgradesВключать "origin=Raspbian,codename=${distro_codename},label=Raspbian";обновления стали поступать.
Rabarberski
Мои костные запасы (по состоянию на сентябрь 2017 года) 50unattended-upgradesперечислены, "origin=Debian,codename=${distro_codename},label=Debian-Security";и, похоже, они правильно находят нужные пакеты. Конечно, многие из них игнорируются. Я не создал ни одного белого или черного списка.
Джон V
3
Дефолт 50unattended-upgradesдействительно глупый, и его нужно изменить, чтобы он работал на Raspian. Существует нет Raspian-Security. Обновления безопасности не помечены. Важно добавить , как "origin=Raspbian,codename=${distro_codename},label=Raspbian";и "origin=Raspberry Pi Foundation,codename=${distro_codename},label=Raspberry Pi Foundation";к/etc/apt/apt.conf.d/50unattended-upgrades
user643011
23

В терминале введите:

sudo su

Для доступа к приглашению корневого уровня. Затем запустите:

crontab -e

Чтобы начать редактирование вашего crontab, таблица задач запускается автоматически в определенный момент времени. Он откроется в выбранном вами текстовом редакторе. Измените его, чтобы включить следующие строки:

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

Для автоматического обновления и обновления ваших приложений в 7 утра каждый понедельник. Читайте о crontab, чтобы узнать, как приспособиться к вашему вкусу.

Сообщество
источник
2
вероятно, лучше помещать команды в одну строку, &&так как они связаны между собой, и нет никакой причины делать «обновление», если «обновление» не удается.
tedder42
в crontab 0означает воскресенье, но в вашем коде вы 1
указали,
3
dist-upgradeлучше, чем upgrade, вы будете в конечном итоге с нарушенными зависимостями, используя только upgrade. Вы также не сможете обойти обновления, которые требуют диалоговых подтверждений. @ tedder42 указал метод, который предпочитает Debian (используя unattended-upgrades).
ryanpcmcquen
Вы пропустили второе sudo после добавления &&. Хотя это все равно в корне crontab.
user643011
1
Там не должно быть никаких sudoтам; Вы перешли на rootучетную запись с помощью su. Crontab суперпользователя запускается с привилегиями суперпользователя.
Златовласка
8

Вы можете установить и настроить cron-apt. Установите его, выполнив следующие действия:

apt-get install cron-apt

основной файл конфигурации находится в / etc / cron-apt / config

Одна вещь, которую я добавляю в свою конфигурацию:

MAILON="always"

Это будет отправлять электронную почту каждый раз, когда он запускается, а не только если он обнаружит ошибку.

Обратите внимание, что установка по умолчанию не будет автоматически устанавливать обновления (есть некоторые веские причины не делать этого), но вы можете настроить ее для этого. Одно из преимуществ этой программы перед простым решением cron заключается в том, что она дает вам контроль над тем, что устанавливается (только загружайте новые пакеты, устанавливайте обновления безопасности или устанавливайте все обновления).

Чтобы установить время запуска, отредактируйте файл /etc/cron.d/cron-apt.

Вы можете найти больше информации и опций конфигурации здесь

В комплект поставки входит очень хорошая документация, однако она разархивирована. Чтобы извлечь файл:

  1. создать каталог для работы - mkdir cron-apt_documentation
  2. перейти в новый каталог - cd cron-apt_documentation
  3. скопируйте сжатый файл - cp /usr/share/doc/cron-apt/README.gz. (обратите внимание на конечную точку)
  4. распакуйте файл - gunzip README.gz
  5. читать файл - кот README | Меньше
Стив Робиллард
источник
илиzcat /usr/share/doc/cron-apt/README.gz | less
5

В его конфигурации по умолчанию, unattended-upgradesсломан в Raspbian Buster. Он не будет устанавливать важные обновления для ядра и другого программного обеспечения. Ваши варианты:

Рекомендуемый вариант:

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

Для более быстрых обновлений безопасности (но меньшей стабильности, поскольку пакеты не были утверждены для rasbian), вы можете добавить пакеты debian-security в 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

Возможно, вам потребуется установить новые ключи apt для репозитория debian .

Другие опции:

  • Обойти это с помощью cron-apt: sudo apt install cron-apt

  • Другие способы обойти это.

Рекомендуется использовать unattended-updates и исправить пакет, потому что он лучше всего подходит для этой цели. Cron-apt - ваш второй лучший вариант, потому что он также предназначен для аналогичной цели. Я не уверен, что любой из них может автоматически перезагрузить вашу систему после обновления ядра. У автоматических обновлений обычно есть такая опция, но я не уверен, что она работает с исправлением выше.

Дей
источник