Как поддерживать Filemote в актуальном состоянии
Любая установка проверяет обновления один раз при старте и потом раз в сутки. Что происходит дальше, зависит от платформы, потому что условия у них по-настоящему разные: у Windows есть окно, чтобы спросить вас, а у сервера на Linux — нет.
Windows: спрашивает конфигуратор
В Windows обновлениями заведует конфигуратор, а агент намеренно молчит, чтобы вы не получили два запроса или два одновременно работающих установщика.
Когда появляется более новая версия, вы получаете диалог с двумя вариантами:
- Установить — скачивает выпуск с индикатором прогресса, затем закрывает приложение, чтобы установщик мог заменить файлы, которые иначе заблокированы. Дальше всё делает установщик.
- Пропустить — запоминает именно эту версию и перестаёт о ней спрашивать. Более поздняя версия спросит снова.
Linux и macOS: этим занимается агент
Спрашивать негде, поэтому агент скачивает и применяет обновления сам.
Он не станет вам мешать: пока идёт передача файлов, он пишет в журнал transfers in progress — deferring to the next check и оставляет обновление до следующего цикла.
Прежде чем что-либо заменить, агент проверяет, хватает ли свободного места на диске, и
сверяет SHA-256 скачанного файла. Заменив бинарник, он запускает новый с --version и
сравнивает вывод; если эта проверка не проходит, возвращается прежний бинарник, а
обновление отменяется.
Когда каталог установки принадлежит root
Агент работает от вашего пользователя, а /opt/filemote принадлежит root, поэтому туда он
установить не может. Проверяет он это, реально пытаясь записать файл — биты прав достаточно
часто врут на смонтированных только для чтения разделах и в контейнерах, — и, когда каталог
недоступен для записи, скачивает и проверяет обновление, распаковывает его в
/tmp/.filemote-update и записывает в журнал единственную команду, которая доводит дело до
конца:
sudo /opt/filemote/apply-update.sh /tmp/.filemote-update
Этот скрипт останавливает службу, сохраняет старый бинарник, пока новый не пройдёт проверку запуском, откатывается, если тот её не прошёл, обновляет исходники AI-сервиса и снова запускает службу.
В архивах вплоть до 1.11.0 включительно apply-update.sh отсутствовал, поэтому на тех
установках команда выше указывает на несуществующий файл. Пока вы не перешли на более новую
сборку, обновляйтесь повторным запуском скрипта установки из нового архива:
tar xzf filemote-<новая-версия>-linux-x64.tar.gz
cd filemote-<новая-версия>-linux-x64
sudo ./install.sh
Повторный запуск скрипта сохраняет ваши настройки и скачанные модели.
Что заменяет обновление
Только две вещи: бинарник агента и исходники AI-сервиса. Правило устроено как список разрешённого, а не список исключений, поэтому никакое будущее изменение структуры архива не сможет незаметно начать перезаписывать что-то ещё.
Обновление никогда не трогает:
app_settings.json— ваш вход, привязанный токен и открытые папки;models— скачанные AI-модели, самую дорогую часть;knowledge_base— всё, что вы проиндексировали;- маркер, который фиксирует, какие Python-зависимости установлены.
В Windows та же гарантия работает по другой причине: обновление на месте никогда не запускает деинсталлятор, поэтому приватный Python, модели и настройки остаются на месте.
Если новая версия изменила требования к Python, AI-сервис заметит это и переустановит зависимости при следующем запуске AI.
Портативная сборка и ClickOnce
- Портативная сборка не имеет механизма обновления. Скачайте новый архив и замените папку.
- Сборка ClickOnce обновляет себя при каждом запуске — ради этого она и существует.
Как это выключить
Установите UpdateCheckEnabled в false в app_settings.json, чтобы вообще перестать
проверять, либо переключайте UpdateChannel между stable и beta. Оба поля описаны в
статье настройка агента вручную.
Изредка выпуск помечается как находящийся ниже поддерживаемого порога. Такие пишутся в журнал с пометкой «установите как можно скорее» — обычно это исправление безопасности — и их стоит ставить, даже если обычно вы обновления откладываете.
Обновлено 2026-07-31