open source · source-based · linux

Сборка из исходников — без одного и того же ритуала.

YOSI — это клиент-серверное приложение для Linux, которое автоматизирует путь от исходного кода до установленной программы.

Проект вырос из ручных сборок BLFS. Его задача — не заменить зрелый пакетный менеджер, а понять его работу и автоматизировать самую нудную часть.

Клиент
Go CLI
Сборка
на машине пользователя
Сервер
nginx + HTTPS
v0id@yosi:~ target workflow

Демонстрация целевого сценария


              

01 / Идея

Один и тот же путь не должен каждый раз начинаться с нуля.

Ручная сборка полезна, пока не приходится заново искать зависимости, вспоминать команды и выяснять, куда установились файлы. YOSI превращает эту последовательность в описанный и повторяемый процесс.

Обычно вручную

Каждая установка — маленькое расследование.

$ curl -LO source.tar.xz $ sha256sum source.tar.xz $ ./configure && make $ sudo make install # а какие файлы сейчас появились?
YOSI

Команда одна. Путь до результата — явный.

$yosi install <package>

Репозиторий хранит сведения об исходниках и рецепт сборки. Клиент читает их, выполняет шаги в заданном порядке и сохраняет результат установки.

Следить за реализацией этого сценария ↗

02 / Устройство

Dumb server. Smart client.

Сервер просто раздаёт версионированные файлы через nginx. Вся интересная работа остаётся у клиента.

$Go CLI

YOSI client

Получает метаданные, разбирает зависимости и ведёт процесс от исходного архива до списка установленных файлов.

/usr/bin/yosi
{ }nginx / static

YOSI repository

Статические index.json, manifest.toml и build.toml. Никакого отдельного тяжёлого backend.

repo.yosi-repo.ru/v1/
PACKAGE INPUT

Рецепты пакетов

Источник, контрольная сумма, зависимости и команды сборки описываются отдельно от кода клиента.

manifest.toml + build.toml
CLIENT LOGIC

План установки

Клиент сопоставляет зависимости и определяет порядок, в котором пакеты должны быть собраны.

packages → dependency graph
LOCAL STATE

Установка и учёт

Результат сначала проверяется отдельно, а затем клиент записывает пакет и принадлежащие ему файлы в локальную базу.

staging → install database

Архитектура задаёт направление; текущее состояние каждого узла видно в GitHub ↗

03 / Сравнение

Не AUR-хелпер и не Portage, вынесенный из Gentoo.

YOSI задуман как самостоятельный слой для пакетов из исходного кода: со своим репозиторием, рецептами и клиентом, без обязательной привязки к pacman или инфраструктуре конкретного дистрибутива.

YOSI / DESIGN GOAL

Пакетная система, которую можно развивать вместе с дистрибутивом.

Она может стать основой для небольшого или нового Linux-дистрибутива либо работать поверх уже установленной системы. Нужны только клиент и поддерживаемый набор рецептов — не чужая база пакетов и не чужой пакетный менеджер.

Portage ↗

Для чего
Полноценное управление пакетами и конфигурацией Gentoo через ebuild-репозитории.
Граница
Portage глубоко связан с моделью и экосистемой Gentoo. Его можно применять в специальных сценариях вроде Gentoo Prefix, но это не простой универсальный слой для любого дистрибутива.

paru ↗ / yay ↗

Для чего
Удобная работа с AUR и PKGBUILD в системе Arch Linux.
Граница
Оба инструмента опираются на pacman, makepkg и формат Arch. YOSI не расширяет AUR: он определяет собственный репозиторий и собственный путь сборки.

ALFS / jhalfs ↗

Для чего
Автоматизация инструкций LFS и BLFS при сборке самой системы.
Граница
ALFS следует книгам LFS. YOSI начинает с уже работающего Linux и должен управлять отдельными пакетами на протяжении их установки, проверки и удаления.

Это целевая граница проекта, а не обещание готового релиза. Реальный объём работающего кода всегда можно проверить в коммитах GitHub ↗.

04 / Код

Что уже работает — лучше всего видно в репозитории.

Сайт объясняет идею и не пытается вести вечно устаревающий список готовности. Коммиты, README и Issues показывают текущее состояние без прикрас.

PUBLIC · MAIN BRANCH

github.com/developv0id/yosi

Здесь лежат реальный Go-клиент, документация и вся история проекта. Если сайт и код когда-нибудь расходятся — верить нужно коду.

Открыть репозиторий

05 / Infrastructure supervisor

Йося следит, чтобы репозиторий не развалился.

Неофициальный маскот проекта, Chief Repository Officer и единственный сотрудник, которому разрешено спать во время production-инцидента.

whoami
v0id@developv0id
AKA
Сергей Варакин
ROLE
YOSI creator
MODE
Linux enthusiast

06 / Автор

Сергей Варакин учится на собственных проектах — иногда буквально.

В Linux он пришёл не самым прямым путём: поставил Kali ради инструментов, успел раздать chmod 777 системным каталогам, а потом был вынужден во всём разобраться, когда сгоревший блок питания оставил его со старым ноутбуком один на один. Дальше были Arch, Hyprland и собранный с нуля LFS.

Повторяющиеся сборки BLFS и дали идею YOSI. Сергей пока называет себя начинающим разработчиком, особенно в Go, зато уверенно работает с Linux, держит домашний Debian-сервер и предпочитает учиться на вещах, которыми действительно будет пользоваться.

Он учится в 10Г инженерного профиля ГБОУ Школы № 1411 в Москве — корпус 3, улица Декабристов, 1. YOSI — его личный проект, который он развивает и представляет как школьный. Помимо Linux и безопасности, Сергею интересны микроконтроллеры, английский и физика — особенно электростатика и электродинамика.