Skip to main content

Vývojové prostředí

TOS 7 používá kořenový souborový systém kompatibilní s Ubuntu 22.04 LTS (Jammy Jellyfish). Aby byla zajištěna binární kompatibilita a konzistentní verze závislých knihoven, musí vývojáři postavit své vývojové prostředí na základě Ubuntu 22.04.

Systémový základ

Doporučené možnosti vývojového prostředí:

MožnostPopisNejvhodnější pro
Fyzický stroj / VM s Ubuntu 22.04 (arm64)Nativní prostředí ARM64; kompilace a spuštění přímo, bez nutnosti křížové kompilaceVývojáře s hardwarem ARM nebo ochotné používat ARM VM
Kontejner Docker (arm64v8/ubuntu:22.04)Spuštění kontejneru ARM64 na hostiteli x86 prostřednictvím emulace QEMUVývojáře na x86, kteří preferují kontejnerizované pracovní postupy
Hostitel x86 + křížová kompilaceInstalace nástrojů křížové kompilace na vývojářský stroj x86, křížová kompilace za účelem vytvoření binárek cílených na platformu TNASNejběžnější nastavení pro vývojáře na x86
Klíčová zásada

Bez ohledu na zvolený přístup musí zdroje APT a verze balíčků použité ve vývojovém prostředí odpovídat kořenovému souborovému systému TOS 7 (kompatibilní s Ubuntu 22.04), aby se předešlo chybám za běhu způsobeným neshodou verzí glibc, OpenSSL a dalších základních knihoven.

Podporované cílové architektury

TNAS poskytuje hardwarové architektury arm64 i amd64. Aplikace musí poskytovat samostatné sestavení pro každou cílovou architekturu. Podpora více architektur vyžaduje samostatná podání pro každý cíl.

ArchitekturaTriplet cíle sestaveníPole architektury DebTypické modely TNAS
ARM 64-bit (aarch64)aarch64-linux-gnuarm64Modely TNAS založené na ARM
x86 64-bit (x86_64)x86_64-pc-linux-gnuamd64Modely TNAS založené na x86

Konfigurace zdrojů APT pro Ubuntu 22.04

Kořenový souborový systém TOS 7 kompatibilní s Ubuntu 22.04 používá Ubuntu ports.ubuntu.com (zrcadlo specifické pro architekturu ARM). Vývojové prostředí musí být nakonfigurováno se stejnými softwarovými zdroji, aby byla zajištěna shoda verzí balíčků.

Aktuální konfigurace zdrojů APT v TOS 7 (/etc/apt/sources.list):

deb http://ports.ubuntu.com/ubuntu-ports/ jammy main restricted
deb http://ports.ubuntu.com/ubuntu-ports/ jammy-updates main restricted
deb http://ports.ubuntu.com/ubuntu-ports/ jammy universe
deb http://ports.ubuntu.com/ubuntu-ports/ jammy-updates universe
deb http://ports.ubuntu.com/ubuntu-ports/ jammy multiverse
deb http://ports.ubuntu.com/ubuntu-ports/ jammy-updates multiverse
deb http://ports.ubuntu.com/ubuntu-ports/ jammy-backports main restricted universe multiverse
deb http://ports.ubuntu.com/ubuntu-ports/ jammy-security main restricted
deb http://ports.ubuntu.com/ubuntu-ports/ jammy-security universe
deb http://ports.ubuntu.com/ubuntu-ports/ jammy-security multiverse
Pro vývojářské stroje x86

Nahraďte ports.ubuntu.com/ubuntu-ports hodnotou archive.ubuntu.com/ubuntu, ale ponechte jammy kódové označení distribuce beze změny, abyste zajistili shodu verzí balíčků.

Základní sada nástrojů pro sestavení

Vývojáři by měli do svého vývojového prostředí Ubuntu 22.04 nainstalovat následující nástroje, aby zajistili, že artefakty sestavení budou binárně kompatibilní s TOS 7:

NástrojZdroj v Ubuntu 22.04Účel
build-essentialjammy/mainZahrnuje gcc-11/g++-11, make a další základní kompilační nástroje
makejammy/mainAutomatizace sestavení GNU Make
cmakejammy/mainMultiplatformní systém sestavení
gitjammy/mainSpráva verzí
pkg-configjammy/mainNástroj pro dotazování závislostí knihoven
# Install on development machine
apt install -y build-essential make cmake git pkg-config

Prostředí křížové kompilace

Pokud se architektura místního počítače vývojáře liší od cílové architektury TNAS, je nutné nakonfigurovat nástroje křížové kompilace.

Průvodce párováním architektur:

Architektura vývojového strojeCílová architektura TNASMetoda křížové kompilace
x86_64 (amd64)aarch64 (arm64)Instalace crossbuild-essential-arm64
x86_64 (amd64)x86_64 (amd64)Nativní kompilace, křížová kompilace není nutná
aarch64 (arm64)x86_64 (amd64)Instalace crossbuild-essential-amd64
aarch64 (arm64)aarch64 (arm64)Nativní kompilace, křížová kompilace není nutná
# Example: Set up arm64 cross-compilation on x86_64 host
dpkg --add-architecture arm64
apt update
apt install -y crossbuild-essential-arm64

Průvodce běhovými prostředími jazyků

TOS 7 poskytuje konkrétní předinstalovaná běhová prostředí. Vývojáři musí rozumět tomu, která běhová prostředí jsou v systému nativně dostupná, a odpovídajícím způsobem naplánovat svou strategii závislostí.

1.Python (předinstalovaný)

TOS 7 je dodáván s předinstalovaným Pythonem 3.10.12 spolu s následujícími systémovými moduly:

ModulÚčel
python3-certifiOvěřování certifikátů SSL
python3-cffi-backendRozhraní pro rozšíření C
python3-cryptographyKnihovna kryptografických algoritmů
python3-dbusMeziprocesová komunikace D-Bus
python3-dnspythonSada nástrojů DNS
python3-giVazby introspekce GObject
python3-gpgŠifrovací rozhraní GnuPG
python3-ldbVazby databáze LDAP
python3-markdownPřevod Markdown na HTML
python3-django-pyscssPodpora SCSS pro Django

Pokyny pro vývoj:

  • Aplikace Deb mohou přímo záviset na Pythonu 3.10 deklarováním Depends: python3 v DEBIAN/control
  • Pro další knihovny třetích stran neuvedené výše je přibalte k balíčku Deb nebo je nainstalujte do soukromého adresáře pomocí pip install --target
  • Obecné pokyny k řešení nepředinstalovaných závislostí viz Kapitola 2 · Strategie architektury

2.Java (nepředinstalovaný)

TOS 7 nepředinstaluje běhové prostředí Java. Vývojáři nasazující aplikace Java mají dvě možnosti:

Možnost 1: Závislost na běhovém prostředí Java z TOS App Center

TOS App Center poskytuje samostatnou aplikaci běhového prostředí Java. Aplikace třetích stran mohou v manifestu svého balíčku deklarovat závislost na tomto běhovém prostředí. Když uživatelé aplikaci nainstalují, systém automaticky zkontroluje běhové prostředí Java a vyzve k jeho instalaci jako první.

Konkrétní pole pro deklaraci závislostí viz Kapitola 4 · Specifikace balíčku.

Možnost 2: Přibalení běhového prostředí Java k aplikaci

Vývojáři mohou distribuovat sestavení OpenJDK spolu s balíčkem své aplikace. Aplikace se spouští přímo pomocí přibalené binárky java, bez nutnosti dalších instalací uživatelem.

3.Go (nepředinstalovaný — křížová kompilace a nasazení)

Go nativně podporuje křížovou kompilaci. Vývojáři kompilují binárky pro cílovou platformu na svých vlastních počítačích a nasazují je na TNAS:

# Compile static binary for arm64
GOOS=linux GOARCH=arm64 CGO_ENABLED=0 go build -o appname-arm64 main.go

# Compile static binary for amd64
GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -o appname-amd64 main.go
Doporučení:
  • Použijte CGO_ENABLED=0 k vytvoření staticky linkovaných binárek bez závislostí na systémových knihovnách
  • Go je doporučený jazyk pro aplikace, jejichž základní logiku nelze implementovat v Pythonu nebo které vyžadují vysoký výkon

4.C / C++ (standardní vývoj)

Aplikace C/C++ se řídí standardními vývojovými postupy — vývojáři kompilují binárky pro cílovou architekturu na svých vlastních počítačích a nasazují je na TNAS.

Klíčové úvahy
  • Linkujte proti glibc 2.35 (verze poskytovaná kořenovým souborovým systémem kompatibilním s Ubuntu 22.04) pro binární kompatibilitu
  • Použijte nástroje křížové kompilace, pokud se architektura vývojového stroje liší od cíle
  • Pokyny k párování architektur viz Oddíl 5 · Prostředí křížové kompilace

5.PHP (nepředinstalovaný)

TOS 7 nepředinstaluje PHP. Vývojáři nasazující aplikace PHP mají dvě možnosti:

Možnost 1: Závislost na běhovém prostředí PHP z TOS App Center

TOS App Center poskytuje aplikaci běhového prostředí PHP 8.0. Deklarujte závislost na tomto běhovém prostředí v manifestu svého balíčku. Když uživatelé aplikaci nainstalují, systém automaticky zkontroluje běhové prostředí PHP a vyzve k jeho instalaci jako první.

Konkrétní pole pro deklaraci závislostí viz Kapitola 4 · Specifikace balíčku.

Možnost 2: Přibalení běhového prostředí PHP k aplikaci

Distribuujte binárku PHP spolu s balíčkem své aplikace. Aplikace se spouští přímo pomocí přibaleného interpretu PHP, bez nutnosti dalších instalací uživatelem.

Poznámka: PHP je interpretovaný jazyk. Zdrojový kód je nasazován přímo a funguje napříč architekturami arm64 i amd64 bez křížové kompilace.

Nástroje pro balení a validaci

Nástroje pro aplikace Deb:

NástrojÚčel
dpkg-devSada nástrojů pro sestavení balíčků Debian (dpkg-deb, dpkg-source)
debhelperPomocné skripty pro balení Debian
lintianKontrolor shody balíčků Debian
systemdSpráva služeb a testování souborů jednotek
apt install -y dpkg-dev debhelper lintian

Nástroje pro aplikace Docker:

NástrojMinimální verzeÚčel
Docker Engine20.10+Běhové prostředí kontejnerů
Docker Composev2+Orchestrace kontejnerů
trivy / docker scoutNejnovějšíSkenování zranitelností

Příkazy pro ověření sestavení:

# Deb package: Check compliance
lintian <appid>_<version>_amd64.deb

# Deb package: Verify package metadata
dpkg-deb --info <appid>_<version>_amd64.deb

# Docker: Scan image for known vulnerabilities
trivy image <image>:<tag>

Možnosti testovacího prostředí

Pro konečné ověření je vyžadováno zařízení TNAS se systémem TOS 7.0 (aktuální stabilní/testovací verze). Očekává se, že následné dílčí verze TOS 7.x zůstanou kompatibilní, ale před formálním podáním se doporučuje regresní testování na cílové verzi.

Možnosti testování pro vývojáře bez hardwaru TNAS:

#MožnostPopisDoporučeno pro
1Virtuální stroj s Ubuntu 22.04Základní funkční testování aplikací Deb na VM s Ubuntu 22.04Raný vývoj a CI/CD
2Docker Desktop (Windows/macOS/Linux)Simulace prostředí Docker TOS 7.0 pro testování kontejnerových aplikacíVývoj aplikací Docker
3Vzdálený zkušební strojPožádejte o oficiální vzdálený zkušební stroj TerraMaster TOS 7.0 prostřednictvím oficiálního fóra. Plné testování bez vlastnictví hardwaruVývojáře, kteří nemají hardware ani kapacitu lokálního VM
4Místní nasazení Open TOSVytvoření místního testovacího prostředí pomocí open-source verze Open TOS k simulaci běhového prostředí TOS 7Vývojáře vyžadující plný test kompatibility se systémem TOS
Doporučení

Pro každodenní vývoj a CI/CD používejte možnosti 1–2. Pro komplexní předpodání ověření použijte možnost 3 (vzdálený stroj).

Podrobný postup testování viz Kapitola 13 · Lokální testování a ladění.

Dodatek: Vývoj modulů linuxového jádra

Pro vývojáře vytvářející moduly linuxového jádra mimo strom (např. vlastní síťové ovladače) pro TOS 7 poskytuje systém hlavičky jádra prostřednictvím linux-headers-<version>.deb, v souladu se standardním chováním distribuce Ubuntu.

Rychlá reference:

# Install build tools
apt install -y build-essential

# Extract driver source
tar -xzf driver-source.tar.gz
cd driver-source

# Build the kernel module
make

# Install and load
make install
depmod -a
modprobe <module_name>

# Verify
lsmod | grep <module_name>
dmesg | tail -10
Poznámka

Vývoj modulů jádra vyžaduje, aby verze jádra prostředí sestavení odpovídala verzi jádra TOS 7. Pro konkrétní balíček hlaviček jádra odpovídající vaší cílové verzi TOS kontaktujte vývojářskou podporu TerraMaster.