Non ufficiale
In questa pagina
  1. 01Dove ha fallito
  2. 02Leggi il registro della ricetta
  3. 03Trova la causa
  4. 04Cosa puoi modificare
  5. 05Cambia tu il sorgente di una ricetta
  6. 06Compila di nuovo
  7. 07Quando la build viene completata ma un programma non si avvia

Quando una build App Builder fallisce: leggi il registro, trova la causa, costruisci di nuovo

App Builder compila i programmi di un’app a partire dalle ricette, una dopo l’altra. Una di esse può fallire. Questa guida segue un errore reale su un NAS di test: TurboShell, con 70 ricette, si è fermata alla settima, la shell Korn ksh93.

  1. Dovela ricetta fallita
  2. Logle ultime righe
  3. Causanome dell'errore
  4. Modificaricetta corretta o app
  5. Nuova buildriutilizza le ricette riuscite

Le immagini provengono da Bucket & Code Server IDE 1.0.0-49, prima e dopo la correzione.

01Dove ha fallito

Una build fallita non modifica l’app funzionante. Se una build precedente è riuscita, Attiva, Scarica e Esporta come QPKG continuano a usare quel risultato. La barra laterale indica l’ultima build come fallito e la pagina dell’app mostra l’errore nella pipeline.

La barra laterale delle app: TurboShell, non riuscitaLa pipeline: Compilazione, Fallita; resta una build precedente

La scheda Ordine di build indica la ricetta e la fase dell’errore. In questo esempio le ricette precedenti risultano superata; quelle successive sono non raggiunta e conservano il log di una build precedente.

La scheda Ordine di creazione: ultima build non riuscita, il generatore di messaggi: FAILED ksh93 in build (uscita 1), ricette da 1 a 6 passate, ksh93 non riuscito durante la compilazione, fish non raggiunto con il suo registro precedente

02Leggi il registro della ricetta

Il pulsante Log nella riga della ricetta apre ciò che il builder ha scritto per quella ricetta: le sue fasi, l'output del compilatore, l'audit e il controllo. La causa si trova verso la fine.

Il registro di ksh93: misc/magic.c di libast: errore: nome del tipo sconosciuto Magic_t; intendevi magic_t, quindi mamake codice di uscita 1 rendendo magic.o e pacchetto: make fallito
  • Anche il log del job di compilazione, sotto Job nel pannello inferiore (Ctrl+J), termina con le stesse righe: il builder vi copia le ultime 40 righe del log della ricetta.
  • L'albero di build della ricetta non riuscita rimane nella cartella di build dell'app fino alla build successiva dell'app: apps/<app>/build/work/<recipe> nella cartella dei dati. Aprilo nel terminale dell'editor per guardare i sorgenti e i file generati.

03Trova la causa

Il compilatore richiede Magic_t, il tipo proprio di ksh, e suggerisce magic_t, il tipo di libmagic, la libreria del comando file. Quindi #include <magic.h> nei sorgenti di ksh ha trovato l'intestazione di libmagic, non quella di ksh.

TurboShell compila anche la ricetta file, che installa l'header magic.h di libmagic nel prefisso dell'app. Ogni ricetta viene compilata con la cartella include di quel prefisso nel percorso di ricerca, così i suoi programmi trovano le librerie compilate prima di loro. La prima build di TurboShell ha compilato ksh93 prima di file ed è riuscita. Una build successiva lavora su una copia dell'ultima build riuscita, il cui prefisso conteneva già l'header di libmagic, e ksh93 ha preso quello.

Quando un errore nomina qualcosa, come in questo caso, segui quel nome a ritroso nei sorgenti, nelle ricette precedenti e nell'ambiente di compilazione. Il log mostra dove si è fermata questa build; non ti dice quale modifica risolverà il problema.

04Cosa puoi modificare

  • Una ricetta corretta. Un catalogo firmato può distribuire nuove ricette al NAS tra le versioni dell’app. La scheda Libreria di ricette nella pagina App mostra la versione usata e l’ultima verifica; Cerca aggiornamenti delle ricette avvia subito una verifica. La ricetta corretta ksh93 è arrivata con il catalogo 2026.10.08-1 e isola ksh93 dagli header del prefisso. Scheda Libreria di ricette: catalogo 2026.10.08-1 in uso, ultima verifica riuscita e pulsanti Cerca aggiornamenti delle ricette e Usa la libreria del pacchetto
  • L’app. Con Cambia nella pagina dell’app puoi aggiungere o rimuovere ricette e impostare ambiente e modalità di collegamento. Un programma in conflitto con un’altra ricetta può essere compilato in un’app separata.
  • L'ambiente. Se una ricetta ha bisogno di un compilatore più recente o di uno strumento di compilazione che manca nell'ambiente, scegli un altro ambiente con Cambia.

05Cambia tu il sorgente di una ricetta

Finché non arriva una ricetta corretta, o quando un programma ha una versione più recente di quella che compila la ricetta della libreria, una copia della ricetta può indicare il nuovo sorgente. La copia va nella cartella recipes/ di un tuo progetto qualsiasi, e un’app che prende le ricette di quel progetto compila la copia al posto della ricetta della libreria. La libreria e le altre app restano come sono. Nella libreria di Bucket & Code Server IDE 1.0.0-55 la ricetta tmux compila la versione 3.7c; la copia qui compila la 3.8.

Il registro del job di compilazione indica la libreria in uso nella riga recipe library:. La libreria del pacchetto è /usr/bin/bucketvs/share/bucketvs/recipes/; quella di un catalogo è recipes/current/library/ nella cartella dei dati. Nel terminale dell’editor, nella cartella del progetto, copia da lì la cartella della ricetta e calcola lo sha256 del nuovo archivio:

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  -

In recipes/tmux/recipe.json cambiano tre valori: la versione, l’indirizzo e lo sha256.

"version": "3.8",
"source": {
  "url": "https://github.com/tmux/tmux/releases/download/3.8/tmux-3.8.tar.gz",
  "sha256": "e79c699c7e949dccd0a4a125e17b8d1261e311b16979dbc8eb34542f3966d82e"
},
  • Al salvataggio del file vengono controllate le ricette del progetto e i risultati compaiono nella vista Problemi dell’editor; bvs recipe lint . esegue lo stesso controllo nel terminale. La scheda Ricette della vista del progetto segna la copia con sostituisce la versione 3.7c della libreria. Una copia con un problema viene esclusa, e la ricetta della libreria non prende il suo posto: una compilazione che richiede tmux si ferma prima di partire, indicando il motivo.
  • Nella pagina dell’app, Cambia mostra Ricette da un progetto appena un progetto contiene una ricetta. Scegli il progetto, Salva la modifica, poi Ricompila. Il registro del job di compilazione elenca le ricette lette dal progetto e riporta tmux replaces the library's tmux 3.7c in this app.
  • Una versione che si compila allo stesso modo richiede solo questi tre valori. Se servono altre opzioni di configure o una patch, modifica anche build.sh; La tua prima ricetta spiega quel file.
  • La copia sostituisce la ricetta della libreria per nome, a prescindere dalle versioni. Quando la ricetta della libreria supera la copia, l’app continua a compilare la copia: riporta Ricette da un progetto su Nessuno: solo la libreria, oppure elimina la copia.

06Compila di nuovo

Ricompila nella pagina dell’app avvia un nuovo job di compilazione. Se i file dell’app non sono cambiati dopo la build fallita, la compilazione riprende dal punto in cui quella build si è fermata: le ricette già completate vengono riutilizzate e quella fallita viene compilata di nuovo, qui ksh93 con la ricetta corretta del catalogo.

La pipeline dopo la ricostruzione: Compilazione, CompilatoLa scheda Ordine di costruzione dopo la ricostruzione: ksh93 e fish superate

07Quando la compilazione viene completata ma un programma non si avvia

Ogni build controlla il suo risultato prima di sostituire l'app: il controllo di ogni ricetta e un'analisi che legge ogni programma e libreria senza eseguirli. La scheda Dipendenze dell'app elenca ciò che ha trovato l'analisi: una libreria mancante, una versione che una libreria non definisce, un RUNPATH che punta all'esterno dell'app o un programma che richiede una glibc più recente di quella per cui è pensata l'app. Il pannello offre un'azione suggerita per i risultati supportati, spesso sotto forma di pulsante: Aggiungi … e compila, Passa a … e compila, Correggi il RUNPATH, Scegli un altro ambiente o Compila solo per questo NAS. Sul NAS, bvs deps <app> stampa lo stesso elenco.