Skip to content

Latest commit

 

History

History
17 lines (14 loc) · 6.44 KB

File metadata and controls

17 lines (14 loc) · 6.44 KB

GRU

Global Rolling Updater current (GRU) — это система автоматического обновления, набор спецификаций и общие принципы развёртывания. Известным проектом, использующим GRU, является Tor Portable.

  1. Программа, придерживающаяся GRU, хранит себя через архив по постоянной ссылке. Форматы архивов для GRU должны быть широкоизвестными и кроссплатформенными, вроде .zip. В зависимости от конкретной реализации способ не утратить ссылку может быть различным, одним из них является сохранение названия архива без изменений (IPNS).
  2. Текущая версия программы должна быть указана через специальный файл (назовём его VERSION_1.0) внутри архива и в директории с архивами. Строго запрещено добавлять пробелы в имя этого файла чтобы не препятствовать парсингу; также на парсинг может оказать влияние его пустота против наличия информации внутри. Реализовано автообновление по принципу сравнения файла VERSION внутри архива и в веб директории с архивами — его можно добавить в код любой программы, и оно свяжется с основным апдейтером. Мы обязаны убедиться в защите от цензора проверкой доступности специального файла (пример). Простого ping недостаточно.
  3. Программа, размещённая по системе GRU, не хранит историю версий по актуальной ссылке, вместо этого всегда указывая на последнюю из них. Это делает удобным сокрытие предыдущих версий и невозможным их случайное скачивание. В случае с IPNS предыдущие версии могут сохраниться в файловой системе.
  4. Само обновление происходит по схеме: 1) перевод директории на текущую; 2) проверка доступности тестового файла и прерывание обновления, если оно отсутствует; 3) удаление всех файлов и директорий в папке с копированием пользовательских; 4) скачивание архива; 5) распаковка архива; 6) удаление архива и всех временных файлов. Реализации на Windows и Linux отличаются: Linux хранит исполняемый скрипт в оперативной памяти и делает возможным его горячее удаление, в отличие от Windows. Поэтому на Windows необходимо создание нескольких параллельно запускающихся скриптов.
  5. На Linux эталонным детерменированным развёртыванием является использование портативных библиотек через ./ld-linux-x86-64.so.2 --library-path ., что позволяет запускаться любым программам в идентичной среде, независимо от дистрибутива. GRU допускает молниеносные обновления как самой программы, так и портативных библиотек, их необходимо использовать ради унификации пользовательского опыта при потребности.

На этом описание спецификаций GRU current закончено.

Особенности GRU

  1. Универсальность. Не требуется установки никаких отдельных программ для соблюдения всех спецификаций. Принципы системы могут быть совместимы со множеством файловых хранилищ (проверены IPNS и Dropbox). Для работы IPNS требуется использование republisher вместе с портативной версией Kubo, Dropbox — изменение параметра с dl=0 на dl=1; IPNS не имеет скрытой цензуры, устойчив к цензуре, позволяет откаты и является открытым исходным кодом, Dropbox может быть проще в конфигурировании.
  2. Заложенный в архитектуру rolling-release гарантирует, что пользователь получит только последнюю версию приложения, избегая устаревающих ссылок.
  3. Поддержка обновлений начиная с Windows 7 и на любых Linux системах. Любой файл обновления имеет крайне небольшой размер и при этом генерирует уже распакованную программу по щелчку, что позволяет избегать ограничений на передачу файлов большого размера.
  4. Сохранение битов исполнения и любых метаданных в распакованных файлах, в отличие от, например, git-clone.
  5. Возможность передачи любых видов информации, включая постоянно пополняемых коллекций изображений и музыки.