🔄 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.