Веб магазин: различия между версиями
| Betcher (обсуждение | вклад)  Новая страница: «== В РАЗРАБОТКЕ! ==  == Веб магазин == Статья содержи сведения об устройстве веб магазина РОСА, а также  способы добавления и редактирования карточек приложений  в магазин.   === Общие идеи ===  * Сайт с магазином отдает НЕ пакеты для скачивания, а специально офор...» | Betcher (обсуждение | вклад) | ||
| (не показаны 3 промежуточные версии этого же участника) | |||
| Строка 19: | Строка 19: | ||
| * Магазин позволит достаточно просто интегрировать отличные от dnf способы установки софта. Первый на очереди epm. | * Магазин позволит достаточно просто интегрировать отличные от dnf способы установки софта. Первый на очереди epm. | ||
| === Проекты связанные с магазином === | |||
| https://abf.io/soft/rosastore - Генератор страницы магазина (шаблоны для сборки html, js, css, скрипт для обработки скриншотов и из базы данных для магазина) | |||
| https://abf.io/soft/web-store-database - База данных по которой собирается страница магазина ( Описания, скриншоты, иконки и т.д.) подключен гит сабмодулем к rosastore | |||
| https://abf.io/import/metadata - Сборка rpm пакетов: | |||
| # metadata-apps - пакет с магазином, можно установить локально, для использования локального магазина в пакете есть десктоп файл. | |||
| # metadata-dnfdragora - пакет с метаданными для dnfdragora собранными из той же базы данных | |||
| # web-store-desktop - в пакете всего один десктоп файл для открытия страницы магазина в браузере по умолчанию. Именно этот пакет устанавливается в ОС пользователя для доступа к магазину. | |||
| === Как добавить приложение в веб магазин Росы === | |||
| Во первых нужно добавить приложение в репозиторий, на текущий момент  магазин работает только с пакетами собранными в репозитории. | |||
| Это тема отдельная, здесь описывать не буду. Далее у вас два пути. Простой и интересный.  | |||
| Простой это написать в форум https://forum.rosa.ru/viewtopic.php?t=11774  просьбу добавить приложение,  которое по вашему мнению необходимо в магазине. Интересный -  сделать самому и отправить пулл реквест,  вот об этом подробнее: | |||
| # Нужен аккаунт на https://abf.rosa.ru, регистрация там по инвайтам, приглашение может дать любой пользователь. Просто спросите например тут https://t.me/rosalinux | |||
| # Используя веб интерфейс abf необходимо клонировать гит проект https://abf.io/soft/web-store-database себе. | |||
| # Используя git clone забираете склонированный проект на свою машину.  | |||
| # Карточки приложений лежат в папке database. Можно сделать свою "с нуля" по аналогии с прочими, либо использовать вспомогательные инструменты описанные в README в корне проекта.  README в любом случае почитайте, там описан формат app.yml | |||
| # Теперь нужно проверить как карточка вашего приложения отображается в магазине. Для этого клонируете генератор магазина https://abf.io/soft/rosastore  | |||
| # Копируете папку с вашим приложением из ..../web-store-database/database  в папку database внутри проекта rosastore. Это папка для тестовых сборок магазина, там всего несколько проектов, реальный магазин собирается достаточно долго.  Далее команды выполняются в корне rosastore:  | |||
| #* ./genhtml.py -d database  это создаст страницу в папке ./site | |||
| #* xdg-open ./site/index.html | |||
| # Повторяете пункты 4, 6 пока не получится красиво и аккуратно. Чтобы не открывать каждый раз новую страницу в браузере можно вместо второй команды жать ctrl-f5 в открытом магазине в браузере. | |||
| # В проекте web-store-database делаете коммит | |||
| #* git add database/* | |||
| #* git commit -m "added my supperproject" | |||
| #* git push | |||
| # В веб интерфейсе на странице склонированного себе проекта создаете pull request | |||
| # Ждете когда ваш PR примут либо в комментариях ответят, что нужно исправить чтобы приняли. | |||
| Продолжение следует..... | |||
Текущая версия от 17:02, 29 октября 2025
В РАЗРАБОТКЕ!
Веб магазин
Статья содержи сведения об устройстве веб магазина РОСА, а также способы добавления и редактирования карточек приложений в магазин.
Общие идеи
- Сайт с магазином отдает НЕ пакеты для скачивания, а специально оформленную ссылку. Ссылка открывается в программе rpmgrab, которая извлекает из ссылки имя пакета и устанавливает из репозитория ОС. То есть даже при компрометации магазина мимо репозитория ничего установить нельзя.
- Этот же магазин без каких либо изменений используется для BFRESH и Бария, просто вместо rpmgrab запускается другая утилита, которая создает модули вместо установки.
- ПО в магазине не имеет версий, это позволяет не пересобирать страницу после каждого изменения в репозитории, а также использовать один магазин для разных платформ.
- В текущей реализации страница статична, что одновременно является дополнительной защитой магазина, снижает нагрузку на сервер и позволяет установить Магазин локально без использования локального веб сервера.
- Для снижения трафика сервер отдает небольшую HTML страницу и базу с данными записанную в js файл, часть страницы с контентом формируется js на стороне браузера, а скриншоты догружаются с использованием механизма lazy download, то есть грузятся только видимые в данный момент.
- Html cтраница и js генерируются скриптом на основе базы данных, которая одновременно используется для генерации пакета со скриншотами и описаниями для dnfdragora.
- Сама база наполняется в полу-автоматическом режиме на основе данных dnf info и appstream метаданных.
- Магазин позволит достаточно просто интегрировать отличные от dnf способы установки софта. Первый на очереди epm.
Проекты связанные с магазином
https://abf.io/soft/rosastore - Генератор страницы магазина (шаблоны для сборки html, js, css, скрипт для обработки скриншотов и из базы данных для магазина)
https://abf.io/soft/web-store-database - База данных по которой собирается страница магазина ( Описания, скриншоты, иконки и т.д.) подключен гит сабмодулем к rosastore
https://abf.io/import/metadata - Сборка rpm пакетов:
- metadata-apps - пакет с магазином, можно установить локально, для использования локального магазина в пакете есть десктоп файл.
- metadata-dnfdragora - пакет с метаданными для dnfdragora собранными из той же базы данных
- web-store-desktop - в пакете всего один десктоп файл для открытия страницы магазина в браузере по умолчанию. Именно этот пакет устанавливается в ОС пользователя для доступа к магазину.
Как добавить приложение в веб магазин Росы
Во первых нужно добавить приложение в репозиторий, на текущий момент магазин работает только с пакетами собранными в репозитории.
Это тема отдельная, здесь описывать не буду. Далее у вас два пути. Простой и интересный.
Простой это написать в форум https://forum.rosa.ru/viewtopic.php?t=11774 просьбу добавить приложение, которое по вашему мнению необходимо в магазине. Интересный - сделать самому и отправить пулл реквест, вот об этом подробнее:
- Нужен аккаунт на https://abf.rosa.ru, регистрация там по инвайтам, приглашение может дать любой пользователь. Просто спросите например тут https://t.me/rosalinux
- Используя веб интерфейс abf необходимо клонировать гит проект https://abf.io/soft/web-store-database себе.
- Используя git clone забираете склонированный проект на свою машину.
- Карточки приложений лежат в папке database. Можно сделать свою "с нуля" по аналогии с прочими, либо использовать вспомогательные инструменты описанные в README в корне проекта. README в любом случае почитайте, там описан формат app.yml
- Теперь нужно проверить как карточка вашего приложения отображается в магазине. Для этого клонируете генератор магазина https://abf.io/soft/rosastore
- Копируете папку с вашим приложением из ..../web-store-database/database  в папку database внутри проекта rosastore. Это папка для тестовых сборок магазина, там всего несколько проектов, реальный магазин собирается достаточно долго.  Далее команды выполняются в корне rosastore:
- ./genhtml.py -d database это создаст страницу в папке ./site
- xdg-open ./site/index.html
 
- Повторяете пункты 4, 6 пока не получится красиво и аккуратно. Чтобы не открывать каждый раз новую страницу в браузере можно вместо второй команды жать ctrl-f5 в открытом магазине в браузере.
- В проекте web-store-database делаете коммит
- git add database/*
- git commit -m "added my supperproject"
- git push
 
- В веб интерфейсе на странице склонированного себе проекта создаете pull request
- Ждете когда ваш PR примут либо в комментариях ответят, что нужно исправить чтобы приняли.
Продолжение следует.....