programmatūra · 6 min · 25.08.2026

Shelly 3.1 pats būvē AUR pakotnes: PKGBUILD kods sāk darboties tikai pēc apskates

Shelly 3.1 AUR pakotnes būvē pats, bez makepkg. Versiju 25. augustā publicēja Seafoam Labs. Tā maina to soli, kurā Arch lietotājam līdz šim bija jāpaļaujas uz svešu čaulas skriptu: PKGBUILD saturu tagad parāda pirms tajā rakstītā koda palaišanas.

Līdz šim Shelly atrada pakotni AUR, izšķīra atkarības, parādīja PKGBUILD failu un tad darbu nodeva makepkg. Tagad visa ķēde no faila apskates līdz parakstītam arhīvam paliek Shelly iekšienē. Rezultāts joprojām ir parasta Arch pakotne ar .PKGINFO, .BUILDINFO un .MTREE ierakstiem, ko pacman uzstāda bez papildu rīkiem. Būvētāju var izsaukt arī atsevišķi ar jauno komandu shelly build.

PKGBUILD saturs pirms izpildes

makepkg strādā tieši: tas PKGBUILD failu ielasa čaulā un augšējā līmeņa kods sāk darboties uzreiz. Shelly 3.1 failu vispirms izparsē. Lietotājam parāda pilnu PKGBUILD tekstu, lokālos avota failus, instalācijas skriptus un izmaiņu žurnālus, kā arī atsevišķu atradumu sarakstu: brīdinājumus par binārajiem failiem, aizdomīgas pēcinstalācijas komandas, homogrāfus un līdzīgi izskatīgas rakstzīmes, nedrošas atsauces uz lokāliem avotiem, kā arī augšējā līmeņa komandu aizstāšanas, kas izpildīsies būves laikā.

Ja dinamiskā metadatu izvērtēšana pēc apstiprinājuma atrod vēl kādu avotu, instalācijas skriptu vai jaunu dalīto pakotņu locekli, Shelly apstājas un prasa papildu apskati.

Shelly nesāk ar aklu PKGBUILD ielasīšanu. Tas failu vispirms izparsē un parāda apskatei, pirms ļauj darboties pakotnes kontrolētam kodam.

Tā rakstīts v3.1.0 laidiena piezīmēs.

Apstiprinājums piesiets konkrētiem baitiem

Apskate neko nedod, ja failu var nomainīt starp apstiprinājumu un izpildi. Shelly hešo PKGBUILD un katru apskatīto blakusfailu, tad tieši pirms izpildes saturu pārbauda vēlreiz. Ja PKGBUILD, instalācijas skripts, izmaiņu žurnāls vai lokāls avota fails pa to laiku ir mainījies, būve tiek atteikta. Tas pats digests tiek pārnests pāri tiesību paaugstināšanai, kad lieto --sync-deps.

Iepakošanas solī Shelly instalācijas skriptus un izmaiņu žurnālus ņem no tiem pašiem baitiem, kas tika apskatīti. Failu tas otrreiz neatver.

Landlock nogriež ceļu uz mājas mapi

Otra jaunā aizsardzība ir Linux Landlock smilškaste ap katru PKGBUILD dzīves cikla soli: dinamisko izvērtēšanu, verify(), prepare(), pkgver(), build(), check() un package(). Ieslēgtā stāvoklī šīs funkcijas redz būves direktoriju un parastos sistēmas rīku ceļus, bet lietotāja mājas mapē brīvi staigāt nevar. Papildu lasāmus vai rakstāmus ceļus Cargo, Gradle, npm vai ccache kešiem var atvērt atsevišķi.

Avotu lejupielāde, arhīva salikšana, žurnalēšana un GPG parakstīšana paliek ārpus smilškastes, tāpēc atslēgu saišķis pakotnes kodam nekad nav pieejams. Landlock pēc noklusējuma ir izslēgts. Ja to ieslēdz uz sistēmas bez Landlock atbalsta, Shelly nokrīt pirms pirmā būves soļa, tā vietā lai būvi klusi palaistu bez aizsardzības.

Paaugstinātais Shelly process koordinē tikai atkarību darījumus. Pašu PKGBUILD atkal palaiž sākotnējais lietotājs. Būvētājam uzliek NO_NEW_PRIVS, ko manto arī tā bērnu procesi.

Atkarības no AUR un obligāti žurnāli

Karogs --sync-deps atkarības risina caur Shelly pašu pakotņu pārvaldnieku. Tas ieskaita jau uzstādītas pakotnes un provides=() ierakstus, atrod un uzbūvē atkarību, kas pieejama tikai AUR, izšķir atkarības katram pieprasītajam dalītās pakotnes loceklim, pēc tam noņem tikai būvei un testiem vajadzīgās pakotnes. Tīrīšana notiek arī tad, ja būve neizdodas.

makepkg dokumentācija apraksta citu uzvedību: --syncdeps trūkstošās atkarības nodod pacman, --rmdeps tās noņem tikai pēc veiksmīgas būves un AUR atkarības tas pats neuzbūvē.

Katra būve saņem žurnālu, kas sākas pirms avotu apstrādes. Žurnāls atzīmē fāžu robežas, stdout un stderr marķē atsevišķi, beigās ieraksta success, failed vai cancelled. Ja Shelly žurnālu nevar izveidot vai turpināt rakstīt, būve krīt. makepkg žurnalēšana ir brīvprātīga ar --log.

Avoti tiek lejupielādēti un pārbaudīti pirms jebkura arhīva izpakošanas. Izpakotājs noraida absolūtus ceļus, izeju ārpus direktorijas, nedrošus simbolisko saišu mērķus un pārāk lielus ierakstus. Gatavos arhīvus raksta ar nejaušiem pagaidu nosaukumiem un publicē ar atomāru pārsaukšanu tikai pēc tam, kad arhīvs ir salikts un vajadzības gadījumā parakstīts.

Zig zem visa tā

Shelly ir CachyOS noklusējuma grafiskais pakotņu pārvaldnieks. Līdz jūlijam tas bija rakstīts C# valodā un prasīja .NET izpildlaiku uz katras mašīnas. Versija 3.0.0 iznāca 29. jūlijā ar kodu, kas pārrakstīts Zig valodā un tagad kompilējas par vietējo bināro failu bez izpildlaika. CachyOS 9. augusta ISO laidiens šo versiju padarīja par noklusējumu. Tajā pašā laidienā kodolu pārvaldnieka aizmugure chwd pārgāja no C++ uz Rust, bet Cachy Update paplātes sīklietotni pārrakstīja Rust valodā.

GTK4 saskarne piedāvā sarakstu vai režģi, PKGBUILD priekšskatījumu AUR pakotnēm, dublējumu izvadi un ievadi TOML formātā, kā arī vienu atjauninājumu pārbaudi, kas aptver repozitoriju pakotnes, AUR, AppImage un Flatpak. Flatpak atbalsts izvākts atsevišķā pakotnē shelly-flatpak-backend.

Komanda shelly build pakotni uzbūvē, bet neuzstāda. Uzstādīšanu joprojām veic parastā AUR plūsma. Repozitorijs sākts 7. janvārī. Kopš 29. jūlija tajā iznākušas deviņas versijas. Šobrīd tam ir 1049 zvaigznes ar GPL-3.0 licenci.

Avoti

komentārisaruna

Komentāri

Šim rakstam vēl nav komentāru. Esi pirmais, kurš dalās ar savu viedokli.

Pievieno komentāru

Tavs e-pasts netiks publicēts. Obligātie lauki atzīmēti.

vēl no programmatūrasaistītie