Обновление автономного сервера ubuntu

Мы разрабатываем устройство на работе, которое доставляется в места с низким или несуществующим доступом в Интернет. При обновлении нашего программного обеспечения у нас есть полный набор технологий для обеспечения актуальности сервера, например, puppet и даже apt-offline.

Сначала у нас не было установлено apt-offline, и, к счастью, мы узнали об этом позже. , это была небольшая загрузка для его установки, которая подходила для большинства наших устройств. У всех пока низкий уровень интернета (от 56 до 256 Кб), поэтому загрузка 1,8 Мб заняла некоторое время, но мы заставили его работать.

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

У меня проблема в том, что у Puppet также есть пакеты для установки. Мы составили список пакетов, которые необходимо установить, но слишком поздно поняли, что apt-offline генерирует подпись на автономном компьютере с этим списком с помощью --install-packages.

Мы пробовали

  • Использовать образ докера ubuntu: xenial, но кажется, что этот образ может иметь отличия и не упаковывает все ...
  • Использование apt-offline + dselect и dpkg для установки списка пакетов установить

И нам не очень повезло ...

Осталось единственное, но очень неприятное решение - установить предварительное обновление базового устройства. Установите apt-offline и сгенерируйте новую подпись по умолчанию, которую все будут использовать с этими --install-packages, но опять же, проблема в том, что когда я устанавливаю apt-offline, я получаю, например, обновленные пакеты для python. Эти пакеты не будут упакованы с помощью apt-offline, когда я выполняю «apt-offline get», потому что подпись указывает на их актуальность.

Итак, мы ищем:

  • Способ использования подписи, по умолчанию или с реального устройства
  • Способ указать больше пакетов для установки при условии, что у нас нет доступа к устройству
  • Способ упаковать все необходимые пакеты, даже если они обновлены
  • Или что-то, что попадает в эти строки

Спасибо

1
задан 11 August 2017 в 15:21
1 ответ

Итак, нам пришлось пойти совершенно другим путем и в итоге сделать следующее:

Создайте список версий всех установленных пакетов, используя:

dpkg-query -W -f '${status} ${package} ${version}\n' | sed -n 's/^install ok installed //p' | sed 's/ /=/' | sort | tr -d '\15\32'

Получите выбор, используя:

debconf-get-selections | sed '/^#,*/d'

Загрузите все deb-файлы, используя:

cat "$package_list" | xargs apt-get download

Затем, используя:

dpkg-scanpackages

Мы смогли создать наш собственный локальный репозиторий пакетов, вставить этот репозиторий в качестве первого элемента в список источников и просто запустить apt install с все исправленные версии. Et Voila!

0
ответ дан 4 December 2019 в 04:45

Теги

Похожие вопросы