Кнопка обновления обновляет всё, а не только бинарник
pzmanager-admin update больше не повторяет логику установки: он забирает из релиза get.sh (сверив sha256) и отдаёт работу ему. Поэтому обновление из панели теперь приводит в порядок и скрипты установки, и systemd-юнит — раньше они застывали на версии первой установки, а вместе с ними терялась, например, локальная копия установщика для удаления. Работа уходит в разовый юнит через systemd-run. Иначе она не пережила бы сама себя: панель вызывает скрипт через sudo, тот живёт в cgroup её юнита, и остановка службы установщиком убила бы его на середине. Команда restart по той же причине получила --no-block. Установщик стал понятнее в двух местах, о которые легко споткнуться: - повторная установка той же сборки больше не роняет игровой сервер — если sha256 бинарника совпал, служба не останавливается вовсе; - после обновления он явно пишет, что запускает службу, и проверяет, что она поднялась. Раньше systemctl start отрабатывал молча, и по выводу нельзя было понять, работает панель или нет. Службу, остановленную не установщиком, он по-прежнему не поднимает самовольно. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -35,7 +35,8 @@ func (s *Server) handleApplyUpdate(w http.ResponseWriter, r *http.Request) {
|
||||
// Игровой сервер останавливаем сами: иначе это сделает systemd уже в
|
||||
// момент перезапуска, и ожидание растянется на таймаут остановки.
|
||||
s.stopServerBefore(log, "обновлением")
|
||||
log("Запускаю обновление, панель перезапустится")
|
||||
log("Запускаю обновление — оно идёт отдельной службой и переживёт перезапуск панели")
|
||||
log("Подробности: journalctl -u pzmanager-update -f")
|
||||
return s.updater.Apply(ctx, log, body.Version)
|
||||
})
|
||||
if err != nil {
|
||||
|
||||
Reference in New Issue
Block a user