Как включить автоматическое автоматическое обновление для любого хранилища?

Я читал здесь, как включить автоматическое автоматическое обновление для Google Chrome. Тем не менее, у меня есть другие репозитории, такие как spotify, docky и другие, для которых я хотел бы включить автоматическое обновление.

Я пытаюсь сделать это в моей системе Ubuntu 10.04. Но этот вопрос относится ко всем версиям Ubuntu. У меня установлен пакет автоматических обновлений.

Как я могу это сделать?

4 ответа

Решение

Сначала установите gksu:

sudo apt-get install gksu

Самым простым включением автоматических обновлений для вашей системы является редактирование файла. 50unattended-upgrades внутри /etc/apt/apt.conf.d/ с вашим любимым текстовым редактором, например:

gksu gedit /etc/apt/apt.conf.d/50unattended-upgrades

В нем вам нужно закомментировать закомментированные разделы блока Allowed Origins

+ Изменить

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

в

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

Для программного обеспечения, которое отсутствует в репозиториях Ubuntu, которое вы хотите обновить, вам нужно добавить источник и архив в файл. Чтобы узнать, что это за ваши PPA, откройте папку /var/lib/apt/lists/это область хранения информации о состоянии для каждого ресурса пакета. То, что вы ищете, это файлы, которые заканчиваются на Release в названии.

Откройте его в текстовом редакторе, например, для Google Chrome:

gedit /var/lib/apt/lists/dl.google.com_linux_chrome_deb_dists_stable_Release

Origin: Google, Inc.
Label: Google
Suite: stable
Codename: stable
Version: 1.0
Date: Thu, 17 Nov 2011 19:09:01 +0000
Architectures: i386 amd64
Components: main
Description: Google chrome-linux repository.

Происхождение очевидно (Origin: Google, Inc.) и в архиве будет все, что есть под строкой Suite (Suite: stable).

Если либо Origin или же Suite отсутствует, то они будут пустой строкой. Но обратите внимание, что если оба отсутствуют, то, вероятно, будет невозможно использовать этот источник с автоматическими обновлениями, не включая другие источники с той же проблемой.

После того, как вы отметили эти 2 строки, вам нужно отредактировать 50unattended-upgrades файл и добавить строки, используя этот формат "<origin>:<archive>"; ради этого примера "Google\, Inc.:stable";,

Происхождение Google Chrome довольно сложно, поскольку в нем есть пробел, конечная точка и запятая, но большинство файлов Release будет легко читаться.

В качестве другого примера, источник JS Node указывает источник (Node Source) но не архив; так что вы можете сопоставить его с "Node Source:";,

Allowed Origins сопоставляется с использованием подстановочных знаков в стиле оболочки (более конкретно, с помощью функции Python fnmatch ()). Если вы достаточно осторожны, чтобы не включать конфликтующие источники, можно написать что-то вроде "Node *:*";,


Не забудьте сделать резервную копию вашего 50unattended-upgrades файл перед редактированием, сделайте это с sudo cp /etc/apt/apt.conf.d/50unattended-upgrades /etc/apt/apt.conf.d/50unattended-upgrades.bak,

Для проверки изменений, внесенных в файл, вы можете использовать sudo unattended-upgrades с параметрами --dry-run а также --debug,

--dry-run будет запускать цикл автоматических обновлений, за исключением того, что он не будет устанавливать обновления, только проверьте и убедитесь, что все в порядке.

--debug включит подробный режим.

Вы всегда можете проверить журналы для unattended-upgrades в /var/log/unattended-upgrades/unattended-upgrades.log,


Вы можете изменить конфигурацию автоматических обновлений, отредактировав файл /etc/apt/apt.conf.d/10periodicпараметры для настройки находятся в /etc/cron.daily/apt Заголовок сценария. Прочитайте их, чтобы настроить частоту автоматических обновлений.

Автоматизированный подход к ответу @Bruno Pereira:(Пожалуйста, подумайте о роли github-репо, если вы найдете ответ полезным.)

Ссылка на код: https://github.com/abhigenie92/unattended_upgrades_repos

  • Проверьте репозитории, чтобы добавить:

    $ python automatic_upgrade.py 
    Add repos:
    "Ubuntu:xenial";
    "LP-PPA-kubuntu-ppa-backports:xenial";
    "LP-PPA-tuxonice:xenial";
    "LP-PPA-webupd8team-sublime-text-3:xenial";
    
    Skipping files due to not present origin or suite. Or origin being a url.:
    packagecloud.io_slacktechnologies_slack_debian_dists_jessie_InRelease
    tiliado.eu_nuvolaplayer_repository_deb_dists_xenial_InRelease
    
  • Сейчас редактирую /etc/apt/apt.conf.d/50unattended-upgrades включить их:

    // Automatically upgrade packages from these (origin:archive) pairs
    Unattended-Upgrade::Allowed-Origins {
        "${distro_id}:${distro_codename}-security";
        "${distro_id}:${distro_codename}-updates";
        "${distro_id}:${distro_codename}-proposed";
        "${distro_id}:${distro_codename}-backports";
      "Ubuntu:xenial";
      "LP-PPA-kubuntu-ppa-backports:xenial";
      "LP-PPA-tuxonice:xenial";
      "LP-PPA-webupd8team-sublime-text-3:xenial";
    };
    ....
    ....
    
  • Проверьте, включены ли они:

    $ sudo unattended-upgrade --dry-run --debug
    Initial blacklisted packages: 
    Initial whitelisted packages: 
    Starting unattended upgrades script
    Allowed origins are: ['o=Ubuntu,a=xenial-security', 'o=Ubuntu,a=xenial-updates', 'o=Ubuntu,a=xenial-proposed', 'o=Ubuntu,a=xenial-backports', 'o=Ubuntu,a=xenial', 'o=LP-PPA-kubuntu-ppa-backports,a=xenial', 'o=LP-PPA-tuxonice,a=xenial', 'o=LP-PPA-webupd8team-sublime-text-3,a=xenial']
    pkgs that look like they should be upgraded: 
    Fetched 0 B in 0s (0 B/s)                                                                                  
    fetch.run() result: 0
    blacklist: []
    whitelist: []
    No packages found that can be upgraded unattended and no pending auto-removals
    

Редактирование /etc/apt/apt.conf.d/50unattended-upgradesдобавьте следующее:

Unattended-Upgrade::Origins-Pattern {
        "origin=*";
};

Это позволит автоматические обновления для всех пакетов.

Инструкции по принудительному повторному запуску для автоматического запуска cron по следующей ссылке. Процедура остановки cron заключается в следующем

sudo service anacron stop
sudo service cron stop
sudo rm -rf /var/run/unattend* /var/run/cron* /var/run/anacron*
sudo rm -rf /var/lib/apt/periodic/*

и перезапустить cron, чтобы сделать автоматическое обновление сейчас (или, по крайней мере, в течение нескольких минут)

sudo service cron start
sudo anacron -fn

Как это устроено

Несколько вещей приведут его в действие.

  • Он уволен с работы /etc/cron.daily cron, в частности /etc/cron.daily/apt, Крон бежит /etc/cron.daily в 6.25 (см. /etc/crontab)

  • Анакрон бежит от выскочки? и оно сработает /etc/cron.daily после 5 минут безотказной работы (см. /etc/anacrontab)

    Заметка APT::Periodic::RandomSleep может быть установлен в/etc/apt/apt.conf.d/10periodic, но по умолчанию - 1800 секунд (30 минут), поэтому обновления могут происходить только через 30 минут после /etc/cron.daily/apt пробеги.

Журнал

Если это работает, вещи должны войти в эту папку, /var/log/unattended-upgrades,

Другие вопросы по тегам