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žnost | Popis | Nejvhodně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é kompilace | Vý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 QEMU | Vývojáře na x86, kteří preferují kontejnerizované pracovní postupy |
| Hostitel x86 + křížová kompilace | Instalace 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 TNAS | Nejběžnější nastavení pro vývojáře na x86 |
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.
| Architektura | Triplet cíle sestavení | Pole architektury Deb | Typické modely TNAS |
|---|---|---|---|
| ARM 64-bit (aarch64) | aarch64-linux-gnu | arm64 | Modely TNAS založené na ARM |
| x86 64-bit (x86_64) | x86_64-pc-linux-gnu | amd64 | Modely 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
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ástroj | Zdroj v Ubuntu 22.04 | Účel |
|---|---|---|
build-essential | jammy/main | Zahrnuje gcc-11/g++-11, make a další základní kompilační nástroje |
make | jammy/main | Automatizace sestavení GNU Make |
cmake | jammy/main | Multiplatformní systém sestavení |
git | jammy/main | Správa verzí |
pkg-config | jammy/main | Ná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 stroje | Cílová architektura TNAS | Metoda 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-certifi | Ověřování certifikátů SSL |
python3-cffi-backend | Rozhraní pro rozšíření C |
python3-cryptography | Knihovna kryptografických algoritmů |
python3-dbus | Meziprocesová komunikace D-Bus |
python3-dnspython | Sada nástrojů DNS |
python3-gi | Vazby introspekce GObject |
python3-gpg | Šifrovací rozhraní GnuPG |
python3-ldb | Vazby databáze LDAP |
python3-markdown | Převod Markdown na HTML |
python3-django-pyscss | Podpora SCSS pro Django |
Pokyny pro vývoj:
- Aplikace Deb mohou přímo záviset na Pythonu 3.10 deklarováním
Depends: python3vDEBIAN/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
- Použijte
CGO_ENABLED=0k 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.
- 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-dev | Sada nástrojů pro sestavení balíčků Debian (dpkg-deb, dpkg-source) |
debhelper | Pomocné skripty pro balení Debian |
lintian | Kontrolor shody balíčků Debian |
systemd | Správa služeb a testování souborů jednotek |
apt install -y dpkg-dev debhelper lintian
Nástroje pro aplikace Docker:
| Nástroj | Minimální verze | Účel |
|---|---|---|
| Docker Engine | 20.10+ | Běhové prostředí kontejnerů |
| Docker Compose | v2+ | Orchestrace kontejnerů |
trivy / docker scout | Nejnově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žnost | Popis | Doporučeno pro |
|---|---|---|---|
| 1 | Virtuální stroj s Ubuntu 22.04 | Základní funkční testování aplikací Deb na VM s Ubuntu 22.04 | Raný vývoj a CI/CD |
| 2 | Docker Desktop (Windows/macOS/Linux) | Simulace prostředí Docker TOS 7.0 pro testování kontejnerových aplikací | Vývoj aplikací Docker |
| 3 | Vzdálený zkušební stroj | Požá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í hardwaru | Vývojáře, kteří nemají hardware ani kapacitu lokálního VM |
| 4 | Místní nasazení Open TOS | Vytvoření místního testovacího prostředí pomocí open-source verze Open TOS k simulaci běhového prostředí TOS 7 | Vývojáře vyžadující plný test kompatibility se systémem TOS |
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
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.