Když sestavení App Builder selže: přečtěte si protokol, najděte příčinu, sestavte znovu
Aplikace App Builder sestavuje programy z receptů, jeden po druhém, a kterýkoli z nich může selhat. Tento návod sleduje skutečné selhání na testovacím NASu: TurboShell, aplikace se 70 recepty, se zastavila na sedmém z nich, Korn shellu ksh93.
- Kderecept, který selhal
- Protokolposlední řádky
- Příčinaco uvádí chyba
- Změnaopravený recept nebo aplikace
- ZnovuRebuild použije, co prošlo
Obrázky pocházejí z Bucket & Code Server IDE 1.0.0-49, před opravou a po ní.
01Kde selhalo
Neúspěšné sestavení nezmění fungující aplikaci. Pokud dřívější sestavení uspělo, Activate, Download a Export as QPKG nadále používají jeho výsledek. Postranní panel označí poslední sestavení jako failed a stránka aplikace zobrazí chybu v pipeline.

Karta Build order ukazuje recept a fázi, ve které selhal. V tomto příkladu mají předchozí recepty stav passed; následující mají stav not reached a uchovávají protokol z dřívějšího sestavení.
02Přečtěte si protokol receptu
Log v řádku receptu otevře, co pro recept zapsal sestavovací nástroj: jeho fáze, výstup kompilátoru, audit a kontrolu. Příčina je blízko konce.
- Vlastní protokol úlohy sestavení pod Jobs ve spodním panelu (Ctrl+J) končí stejnými řádky: sestavovací nástroj do něj zkopíruje posledních 40 řádků protokolu receptu.
- Strom sestavení neúspěšného receptu zůstane ve složce sestavení aplikace až do dalšího sestavení aplikace:
apps/<app>/build/work/<recipe>v datové složce. Otevřete jej v terminálu editoru a podívejte se na zdroje a vygenerované soubory.
03Najděte příčinu
Kompilátor hledá Magic_t, vlastní typ ksh, a navrhuje magic_t, typ knihovny libmagic, kterou používá příkaz file. #include <magic.h> ve zdrojích ksh tedy našel hlavičku libmagic, a ne hlavičku ksh.
TurboShell sestavuje také recept file, který nainstaluje hlavičku libmagic magic.h do prefixu aplikace. Každý recept má na vyhledávací cestě adresář include tohoto prefixu, aby programy našly dříve sestavené knihovny. První sestavení TurboShell sestavilo ksh93 před file a uspělo. Pozdější sestavení pracuje s kopií poslední úspěšné verze; její prefix už obsahoval hlavičku libmagic a ksh93 ji použil.
Když chyba něco jmenuje, jako tato, sledujte to jméno zpět přes zdroje, dřívější recepty a prostředí sestavení. Protokol ukazuje, kde se toto sestavení zastavilo; neříká vám, která změna ho opraví.
04Co můžete změnit
- Opravený recept. Recepty přicházejí na NAS mezi vydáními balíčku jako podepsaný katalog. Karta Recipe library na stránce Apps ukazuje, co sestavení používají a kdy proběhla poslední kontrola; Check for recipe updates kontrolu spustí hned. Opravený recept
ksh93přišel v katalogu 2026.10.08-1 a držíksh93mimo hlavičky v prefixu.
- Aplikace. Pomocí Change na stránce aplikace přidáte nebo odeberete recepty a vyberete prostředí a režim linkování. Program, který koliduje s jiným receptem, můžete sestavit v samostatné aplikaci.
- Prostředí. Pokud recept potřebuje novější kompilátor nebo nástroj pro sestavení, který v prostředí chybí, zvolte tlačítkem Change jiné prostředí.
05Změňte zdroj receptu sami
Dokud nepřišel opravený recept, nebo když má program novější vydání, než jaké sestavuje recept z knihovny, může nový zdroj uvést kopie receptu. Kopie patří do složky recipes/ kteréhokoli vašeho projektu a aplikace, která bere recepty tohoto projektu, sestaví kopii místo receptu z knihovny. Knihovna a ostatní aplikace zůstanou, jak jsou. V knihovně Bucket & Code Server IDE 1.0.0-55 sestavuje recept tmux verzi 3.7c; kopie zde sestavuje 3.8.
Protokol úlohy sestavení uvádí používanou knihovnu na řádku recipe library:. Vlastní knihovna balíčku je /usr/bin/bucketvs/share/bucketvs/recipes/; knihovna katalogu je recipes/current/library/ v datové složce. V terminálu editoru ve složce projektu odtud zkopírujte složku receptu a zjistěte sha256 nového archivu:
mkdir -p recipes
cp -r /usr/bin/bucketvs/share/bucketvs/recipes/tmux recipes/
curl -fsSL https://github.com/tmux/tmux/releases/download/3.8/tmux-3.8.tar.gz | sha256sum
e79c699c7e949dccd0a4a125e17b8d1261e311b16979dbc8eb34542f3966d82e -
V recipes/tmux/recipe.json se mění tři hodnoty: verze, adresa a sha256.
"version": "3.8",
"source": {
"url": "https://github.com/tmux/tmux/releases/download/3.8/tmux-3.8.tar.gz",
"sha256": "e79c699c7e949dccd0a4a125e17b8d1261e311b16979dbc8eb34542f3966d82e"
},
- Uložení souboru zkontroluje recepty projektu a nálezy vypíše v zobrazení Problems v editoru;
bvs recipe lint .provede stejnou kontrolu v terminálu. Karta Recipes v zobrazení projektu označí kopii jako replaces the library’s 3.7c. Kopie s problémem se vynechá a recept z knihovny ji nezastoupí: sestavení, které potřebujetmux, se zastaví ještě před startem a uvede důvod. - Na stránce aplikace ukáže Change pole Recipes from a project, jakmile nějaký projekt obsahuje recept. Vyberte projekt, stiskněte Save the change a potom Rebuild. Protokol úlohy sestavení vypíše recepty načtené z projektu a uvede
tmux replaces the library's tmux 3.7c in this app. - Vydání, které se sestavuje stejně, potřebuje jen tyto tři hodnoty. Potřebuje-li jiné volby configure nebo záplatu, upravte i
build.sh; tento soubor vysvětluje Váš první vlastní recept. - Kopie nahrazuje recept z knihovny podle názvu, bez ohledu na verze. Když recept v knihovně kopii předběhne, aplikace stále sestavuje kopii: nastavte Recipes from a project zpět na None: the library only, nebo kopii smažte.
06Vytvořit znovu
Rebuild na stránce aplikace spustí novou úlohu sestavení. Pokud se soubory aplikace od neúspěšného sestavení nezměnily, pokračuje tam, kde se to sestavení zastavilo: recepty, které stihlo dokončit, se použijí znovu a recept, který selhal, se sestaví znovu, zde ksh93 s opraveným receptem z katalogu.


07Když sestavení projde, ale program se nespustí
Každé sestavení před nahrazením aplikace kontroluje výsledek: vlastní kontrolu receptů a analýzu programů a knihoven bez jejich spuštění. Karta Dependencies vypisuje, co analýza našla: chybějící knihovnu, verzi, kterou knihovna nedefinuje, RUNPATH mimo aplikaci nebo program, který potřebuje novější glibc, než pro jakou je aplikace určená. Panel pro podporovaná zjištění navrhuje akci, často jako tlačítko: Add … and build, Switch to … and build, Patch the RUNPATH, Choose another environment nebo Build for this NAS only. Na NASu vypíše stejný seznam bvs deps <app>.