Skip to content

🔄 asc-updater — утилита управления обновлениями

📌 Описание

Отдельная утилита (отдельный бинарник asc-updater) для установки и обновления демона. Вынесена из демона намеренно: она может обновить и перезапустить сам демон, не завися от него, и остаётся работоспособной, даже если демон сломан. Управляет автоматическими обновлениями — их можно включить, настроить или полностью отключить.

🎯 Сценарии использования

  • 📥 Первичная установка: install.sh ставит asc-updater, тот скачивает и устанавливает демон.
  • ⚙️ Интерактивная установка: при установке утилита показывает настройки по умолчанию и спрашивает пользователя — установить с ними или изменить:
⚙️  Настройки установки ASC (по умолчанию):

  Язык:                    en
  Автообновления:          включены
  Канал обновлений:        stable
  Расписание проверки:     ежедневно 04:00
  Каталог установки:       /usr/local/bin

Установить с настройками по умолчанию? [Y/n/изменить]
  • 🤫 Silent-установка: install.sh --silent (или asc-updater install --silent) — одна команда без единого вопроса: все настройки по умолчанию, зависимости ставятся автоматически. Для CI, скриптов и AI-агентов; настроить можно после установки.
  • 🔄 Автообновления: проверка новых релизов по расписанию, обновление с учётом активных задач демона.
  • 🚫 Отключение: asc-updater auto disable — обновления только вручную.
  • 🆘 Откат: asc-updater rollback — возврат на предыдущую версию при проблемах.

🏗️ Техническое решение

CLI

bash
asc-updater install [--silent|--interactive]    # установка демона (по умолчанию — интерактив; --silent — без вопросов, всё по умолчанию)
asc-updater update [--force]                    # обновить сейчас (--force — не ждать завершения задач)
asc-updater auto enable|disable|status          # управление автообновлениями
asc-updater channel stable|beta                 # канал обновлений
asc-updater rollback                            # откат на предыдущую версию
asc-updater status                              # версии: установленная / доступная

Алиас из демона: asc autoupdate enable|disable проксирует в asc-updater auto ....

Поведение

  • Проверка root: установщик (install.sh и asc-updater install) первым делом проверяет, что запущен от root/sudo — иначе останавливается с понятным сообщением (Please run as root: sudo …). Без root невозможно поставить зависимости, создать systemd-юнит и каталог /asc.
  • Расписание: systemd timer (не зависит от работоспособности демона); время проверки настраивается.
  • Координация с демоном: перед обновлением утилита спрашивает демон об активных задачах (установка, бекап) — если есть, обновление откладывается; --force обходит ожидание.
  • Безопасность: релизы скачиваются с GitHub Releases, проверка подписи/чексуммы обязательна; предыдущий бинарник сохраняется для отката.
  • Конфигурация: секция [updater] в /etc/asc/config.toml (enabled, channel, schedule); выбранные при установке настройки сохраняются туда же.
  • Обновление самой утилиты: демон умеет обновлять asc-updater (взаимное обновление — ни один компонент не является неубиваемой точкой отказа).

🔗 Связанные задачи

DMN-001, DMN-014 в ROADMAP.md.

Распространяется по лицензии MIT.