brew creator ontwikkelt nieuwe theepakketbeheerder

Max Howell, auteur van het populaire macOS brew (Homebrew) pakketbeheersysteem, ontwikkelt een nieuwe pakketbeheerder, Tea, gepositioneerd als een voortzetting van de ontwikkeling van brouwsel, gaat verder dan de pakketbeheerder en biedt een uniforme pakketbeheerinfrastructuur die werkt met gedecentraliseerde opslagplaatsen. Het project is in eerste instantie ontwikkeld als een multi-platformproject (momenteel worden macOS en Linux ondersteund, Windows-ondersteuning is in ontwikkeling). De projectcode is geschreven in TypeScript en gedistribueerd onder de Apache 2.0-licentie (brew is geschreven in Ruby en verzonden onder een BSD-licentie).

Thee is conceptueel niet zoals traditionele pakketbeheerders en in plaats van het "Ik wil een pakket installeren"-paradigma, gebruikt het het "Ik wil een pakket gebruiken"-paradigma. In het bijzonder heeft Tea als zodanig geen commando voor pakketinstallatie, maar gebruikt het genereren van omgevingen om pakketinhoud uit te voeren die niet overlapt met het huidige systeem. Pakketten worden in een aparte map ~/.tea geplaatst en worden niet toegewezen aan absolute paden (kunnen worden verplaatst).

Er zijn twee basismodi beschikbaar: springen naar een opdrachtshell met toegang tot een omgeving met geïnstalleerde pakketten, en direct aanroepen van pakketgerelateerde opdrachten. Wanneer bijvoorbeeld "tea +gnu.org/wget" wordt uitgevoerd, zal de pakketbeheerder het wget-hulpprogramma en alle benodigde afhankelijkheden downloaden en vervolgens shell-toegang bieden in een omgeving waar het geïnstalleerde wget-hulpprogramma beschikbaar is. De tweede optie impliceert een directe lancering - "tea +gnu.org/wget wget https://some_webpage", die het wget-hulpprogramma zal installeren en het onmiddellijk in een aparte omgeving zal starten. Complexe chaining is mogelijk, om bijvoorbeeld het white-paper.pdf bestand te downloaden en te verwerken met de glow utility, kun je de volgende constructie gebruiken (als wget en glow niet aanwezig zijn, worden ze geïnstalleerd): tea +gnu. org/wget wget -qO- https:/ /tea.xyz/white-paper.pdf | tea +charm.sh/glow glow - of je kunt de eenvoudigere syntaxis gebruiken: tea -X wget -qO- tea.xyz/white-paper | thee -X gloed

Op dezelfde manier kunt u direct scripts, codevoorbeelden en oneliners uitvoeren, waarbij automatisch de tools worden geladen die nodig zijn voor hun werk. Als u bijvoorbeeld "tea https://gist.githubusercontent.com/i0bj/…/raw/colors.go --yellow" uitvoert, wordt de Go-taaltoolkit geïnstalleerd en wordt het colors.go-script uitgevoerd met het argument --yellow.

Om niet elke keer het tea-commando aan te roepen, is het mogelijk om het aan te sluiten als een universele beheerder van virtuele omgevingen en een handler voor ontbrekende programma's. Als het actieve programma in dit geval niet beschikbaar is, wordt het geïnstalleerd en als het eerder was geïnstalleerd, wordt het in zijn omgeving gestart. $ deno zsh: commando niet gevonden: deno $ cd mijn-project $ deno tea: installeren deno.land^1.22 deno 1.27.0 > ^D

In de huidige vorm zijn de pakketten die beschikbaar zijn voor Tea verzameld in twee collecties, pantry.core en pantry.extra, die metadata bevatten die bronnen voor het downloaden van pakketten, build-scripts en afhankelijkheden beschrijven. De collectie pantry.core bevat kernbibliotheken en hulpprogramma's die up-to-date worden gehouden en getest door de Tea-ontwikkelaars. pantry.extra bevat pakketten die niet goed gestabiliseerd zijn of die door de gemeenschap worden voorgesteld. Er is een webinterface voorzien om door de pakketten te navigeren.

Het proces van het maken van pakketten voor Tea is sterk vereenvoudigd en komt neer op het maken van één universeel pakket.yml-bestand (voorbeeld), waarvoor het pakket niet voor elke nieuwe versie hoeft te worden aangepast. Om nieuwe versies te ontdekken en hun code te downloaden, kan het pakket worden gekoppeld aan GitHub. Het bestand beschrijft ook afhankelijkheden en biedt build-scripts voor ondersteunde platforms. Geïnstalleerde afhankelijkheden zijn onveranderlijk (de versie staat vast), waardoor herhaling van situaties vergelijkbaar met het linkerpad-incident wordt voorkomen.

In de toekomst is het de bedoeling om gedecentraliseerde repositories te creëren die niet gebonden zijn aan een afzonderlijke opslag en een gedistribueerde blockchain gebruiken voor metadata, en een gedecentraliseerde infrastructuur voor het opslaan van pakketten. Releases worden rechtstreeks door beheerders gecertificeerd en beoordeeld door belanghebbenden. Het is mogelijk om cryptocurrency-tokens te distribueren voor een bijdrage aan het onderhoud, de ondersteuning, de distributie en de verificatie van pakketten.

brew creator ontwikkelt nieuwe theepakketbeheerder


Bron: opennet.ru

Voeg een reactie