Skip to main content

Specifikace režimu dvojitého balíčku

V režimu dvojitého balíčku zůstává původní balíček aplikace (zdrojový balíček deb) beze změny, přičemž je dodáván další datový balíček aplikace (datový balíček deb). Datový balíček deb obsahuje konfigurační soubory požadované systémem TOS 7.0 a oba jsou zabaleny do archivu tar.gz pro podání.

Pravidlo pojmenování datového balíčku: <appid>.deb (doporučeno odpovídat config.ini.id, vše malými písmeny)

Vnitřní struktura souborů datového balíčku:

<appid>.deb
├── DEBIAN/
│ ├── control
│ └── postinst
└── usr/
└── local/
└── <appid>/
├── config.ini
├── <appid>.lang
├── images/
│ └── icons/
│ └── <appid>.svg
├── webui.bz2 # Required for WebUI applications
└── nginx/ # Only needed for external open
└── <appid>.conf

DEBIAN/postinst datového balíčku:

#!/bin/bash
set -e

# Ensure correct configuration file permissions
chmod 644 /usr/local/<appid>/config.ini 2>/dev/null || true
chmod 644 /usr/local/<appid>/<appid>.lang 2>/dev/null || true
chmod 644 /usr/local/<appid>/images/icons/<appid>.svg 2>/dev/null || true

exit 0

Poznámky k config.ini datového balíčku:

  • Cesta icon je pevně nastavena na /images/icons/<appid>.svg (odpovídá názvu souboru ikony datového balíčku)
  • id musí přesně odpovídat poli id v config.ini
  • version musí přesně odpovídat poli Version v metadatech zdrojového balíčku
  • application_type musí být nastaveno na deb-TarGz
  • package musí odpovídat poli Package v DEBIAN/control datového balíčku

Vnitřní struktura souborů zdrojového balíčku:

<package>.deb
├── DEBIAN/
│ ├── control
│ ├── preinst
│ ├── postinst
│ ├── prerm
│ └── postrm
└── usr/
└── local/
└── <appid>/
├── bin/
│ └── <binary_name>
├── depends/ # If dependencies exist
│ ├── bin/
│ ├── lib/
│ └── ...
└── init.d/
└── <system_id>.service

Struktura podávacího archivu:

<appid>_<platform>.tar.gz
├── <appid>.deb # Deb data package
└── <package>.deb # Deb source package

Struktura dat v úložišti GitHub (režim dvojitého balíčku):

<appid>_<platform>.tar.gz
├── <appid>.deb # Application data package
└── <package>.deb # Deb source package (original application package)

Povinná omezení režimu dvojitého balíčku:

OmezeníPopisNásledek porušení
Pořadí instalaceNejprve musí být nainstalován zdrojový balíček (<package>.deb), poté datový balíček (<appid>.deb). Datový balíček závisí na zdrojovém balíčku.Selhání instalace
Přísná konzistence verzíVersion obou balíčků musí být přesně stejná. Jakákoli neshoda verzí spouští automatické zamítnutí.Automatické zamítnutí
Žádné binární soubory v datovém balíčkuDatový balíček (<appid>.deb) nesmí obsahovat žádné spustitelné binární soubory, zkompilovaný kód ani knihovny specifické pro systém. Povoleny jsou pouze konfigurační soubory, ikony, jazykové soubory, konfigurace nginx a další statické prostředky.Zachyceno ve fázi automatické validace před podáním, bez vstupu do ruční recenze.
Architektura datového balíčkuArchitecture datového balíčku musí být all a nesmí být amd64 ani arm64. Konfigurační soubory jsou nezávislé na architektuře.Automatické zamítnutí
Nezávislost zdrojového balíčkuZdrojový balíček deb musí být samostatně instalovatelný na systému TOS 7.0 pomocí příkazu dpkg -i.Selhání instalace
Deklarace závislostíPole Depends datového balíčku musí obsahovat název zdrojového balíčku a doporučuje se také zadat verzi.Zamítnutí
Vlastnictví souboru služby systemdSoubor služby systemd (.service) musí být ve zdrojovém balíčku; datový balíček jej nesmí obsahovat. Datový balíček odpovídá pouze za konfiguraci a zobrazení platformy TOS.Zamítnutí
Pořadí odinstalacePři odinstalaci nejprve odeberte datový balíček a poté zdrojový balíček. Odinstalace datového balíčku neovlivní běhová data zdrojového balíčku.

Proces instalace a odinstalace:

# Installation order
sudo dpkg -i <package>.deb # 1. Install deb source package first
sudo dpkg -i <appid>.deb # 2. Then install deb data package

# Uninstallation order
sudo dpkg --remove <appid> # 1. Uninstall data package first
sudo dpkg --purge <package> # 2. Then uninstall source package (`<package>` is the `Package` field value declared in the source package's DEBIAN/control, which is usually different from the data package's `<appid>`)