Inofficiell
På den här sidan
  1. 01Där det misslyckades
  2. 02Läs receptets logg
  3. 03Hitta orsaken
  4. 04Vad du kan ändra
  5. 05Byt källan i ett recept själv
  6. 06Bygg igen
  7. 07När bygget går igenom men ett program inte startar

När en App Builder-build misslyckas: läs loggen, hitta orsaken, bygg igen

En app i App Builder bygger program från recept, ett efter ett. Ett recept kan misslyckas. Den här guiden följer ett verkligt fel på en test-NAS: TurboShell med 70 recept stannade vid det sjunde, Korn-skalet ksh93.

  1. Varreceptet som misslyckades
  2. Loggde sista raderna
  3. Orsakvad felet pekar på
  4. Ändringrättat recept eller app
  5. Bygg igenBygg om återanvänder det som gick igenom

Bilderna kommer från Bucket & Code Server IDE 1.0.0-49, före och efter fixen.

01Där det misslyckades

Ett misslyckat bygge ändrar inte den fungerande appen. Om ett tidigare bygge lyckades använder Aktivera, Ladda ner och Exportera som QPKG fortfarande det resultatet. Sidofältet visar misslyckades för det senaste bygget, och appsidan visar felet i pipelinen.

Apparnas sidofält: TurboShell, misslyckadesPipelinen: Bygge, Misslyckades; ett tidigare bygge finns kvar

Kortet Byggordning anger receptet och fasen där felet inträffade. I det här exemplet visar alla recept före det godkänd. Recepten efter det visar inte nådd och behåller loggen från ett tidigare bygge.

Kortet Byggordning: bygget misslyckades, meddelandet builder: FAILED ksh93 in build (exit 1), recept 1 till 6 godkända, ksh93 misslyckades under kompileringen, fish inte nådd med sin Tidigare logg

02Läs receptets logg

Logg på receptets rad öppnar det som byggaren skrev om receptet: faserna, kompilatorns utdata, granskningen och kontrollen. Orsaken står nära slutet.

Loggen för ksh93: i libasts misc/magic.c felet okänt typnamn Magic_t med förslaget magic_t, sedan avslutningskod 1 från mamake när magic.o byggs, och till sist att make misslyckades för paketet
  • Byggjobbets egen logg, under Jobb i den nedre panelen (Ctrl+J), slutar med samma rader: byggaren kopierar de sista 40 raderna av receptets logg in i den.
  • Det misslyckade receptets byggträd finns kvar i appens byggmapp tills appen byggs nästa gång: apps/<app>/build/work/<recipe> i datamappen. Öppna den i redigerarens terminal för att titta på källorna och de genererade filerna.

03Hitta orsaken

Kompilatorn letar efter Magic_t, som är kshs egen typ, och föreslår magic_t, en typ från libmagic, biblioteket bakom kommandot file. Alltså hittade #include <magic.h> i kshs källkod libmagics headerfil i stället för kshs egen.

TurboShell bygger också receptet file, som installerar libmagics magic.h i appens prefix. Varje recept byggs med prefixets include-mapp i sökvägen, så att programmen hittar biblioteken som byggdes före dem. Det första bygget av TurboShell byggde ksh93 före file och lyckades. Ett senare bygge arbetar i en kopia av det senaste lyckade bygget. Där fanns libmagics headerfil redan i prefixet, och ksh93 hittade den.

När ett fel nämner något, som det här gör, spårar du det namnet bakåt genom källkoden, de tidigare recepten och byggmiljön. Loggen visar var bygget stannade; den säger inte vilken ändring som löser problemet.

04Vad du kan ändra

  • Ett rättat recept. Recept når NAS:en mellan paketets versioner som en signerad katalog. Kortet Receptbibliotek på sidan Appar visar versionen som används och när den senast kontrollerades; Sök efter receptuppdateringar söker direkt. Det rättade receptet ksh93 kom i katalog 2026.10.08-1 och håller ksh93 borta från prefixets headerfiler. Kortet Receptbibliotek: Receptkälla Katalog 2026.10.08-1, senaste kontrollen lyckades och knapparna Sök efter receptuppdateringar och Använd paketets bibliotek
  • Appen. Med Ändra på appsidan lägger du till eller tar bort recept och väljer miljö och länkningssätt. Ett program som krockar med ett annat recept kan byggas i en egen app.
  • Miljön. Om ett recept behöver en nyare kompilator eller ett byggverktyg som miljön saknar väljer du en annan miljö med Ändra.

05Byt källan i ett recept själv

När inget rättat recept har kommit ännu, eller när ett program har en nyare version än den som bibliotekets recept bygger, kan en kopia av receptet ange den nya källan. Kopian hamnar i mappen recipes/ i något av dina projekt, och en app som använder det projektets recept bygger kopian i stället för bibliotekets recept. Biblioteket och de andra apparna förblir som de är. I biblioteket i Bucket & Code Server IDE 1.0.0-55 bygger receptet tmux version 3.7c; kopian här bygger 3.8.

Byggjobbets logg anger biblioteket som används på raden recipe library:. Paketets eget bibliotek är /usr/bin/bucketvs/share/bucketvs/recipes/; en katalogs ligger i recipes/current/library/ i datamappen. Öppna redigerarens terminal i projektets mapp, kopiera receptets mapp därifrån och ta fram sha256 för det nya arkivet:

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  -

I recipes/tmux/recipe.json ändras tre värden: versionen, adressen och sha256.

"version": "3.8",
"source": {
  "url": "https://github.com/tmux/tmux/releases/download/3.8/tmux-3.8.tar.gz",
  "sha256": "e79c699c7e949dccd0a4a125e17b8d1261e311b16979dbc8eb34542f3966d82e"
},
  • När filen sparas kontrolleras projektets recept och fynden listas i redigerarens vy Problems; bvs recipe lint . gör samma kontroll i terminalen. Kortet Recept i projektvyn märker kopian med ersätter bibliotekets version 3.7c. En kopia med ett problem utelämnas, och bibliotekets recept träder inte in i dess ställe: ett bygge som behöver tmux stoppas innan det börjar, med orsaken.
  • På appens sida visar Ändra fältet Recept från ett projekt så snart ett projekt innehåller ett recept. Välj projektet, Spara ändringen och sedan Bygg om. Byggjobbets logg listar recepten det läste från projektet och skriver tmux replaces the library's tmux 3.7c in this app.
  • En version som byggs på samma sätt behöver bara de här tre värdena. Behöver den andra configure-flaggor eller en patch ändrar du även build.sh; Ditt första egna recept förklarar den filen.
  • Kopian ersätter bibliotekets recept efter namn, oavsett versioner. När bibliotekets recept blir nyare än kopian bygger appen ändå kopian: ställ Recept från ett projekt tillbaka till Inget: bara biblioteket, eller ta bort kopian.

06Bygg igen

Bygg om på appsidan startar ett nytt byggjobb. Om appens filer inte har ändrats sedan det misslyckade bygget fortsätter det nya bygget där det förra stannade: recepten som det misslyckade bygget hann bli klart med återanvänds, och det misslyckade receptet byggs på nytt, här ksh93 med det rättade receptet från katalogen.

Pipelinen efter ombyggnaden: Bygge, ByggdKortet Byggordning efter ombyggnaden: ksh93 och fish godkända

07När bygget går igenom men ett program inte startar

Varje bygge kontrollerar resultatet innan appen ersätts: varje recepts egen kontroll och en analys som läser program och bibliotek utan att köra dem. Fliken Beroenden visar vad analysen hittade: ett saknat bibliotek, en version som biblioteket inte definierar, en RUNPATH som pekar utanför appen eller ett program som kräver en nyare glibc än appen är byggd för. Panelen föreslår åtgärder för resultat som stöds, ofta som knappar: Lägg till … och bygg, Byt till … och bygg, Patcha RUNPATH, Välj en annan miljö eller Bygg bara för denna NAS. På NAS:en skriver bvs deps <app> ut samma lista.