Max Howell, l'autor del popular sistema de gestió de paquets de macOS brew (Homebrew), està desenvolupant un nou gestor de paquets anomenat Tea, posicionat com a continuació del desenvolupament de brew, que va més enllà del gestor de paquets i ofereix una infraestructura de gestió de paquets unificada que funciona. amb repositoris descentralitzats. El projecte s'està desenvolupant inicialment com un projecte multiplataforma (actualment s'admeten macOS i Linux, el suport de Windows està en desenvolupament). El codi del projecte està escrit en TypeScript i distribuït sota la llicència Apache 2.0 (brew va ser escrit en Ruby i distribuït sota la llicència BSD).
El te no és conceptualment com els gestors de paquets tradicionals i en comptes del paradigma "Vull instal·lar un paquet", utilitza el paradigma "Vull utilitzar un paquet". En particular, el Tea no té una ordre per instal·lar un paquet com a tal, sinó que utilitza la generació d'entorns per executar els continguts del paquet que no es superposen amb el sistema actual. Els paquets es col·loquen en un directori separat ~/.tea i no estan lligats a camins absoluts (es poden moure).
Es proporcionen dos modes de funcionament principals: anar a un intèrpret d'ordres amb accés a l'entorn amb paquets instal·lats i cridar directament ordres relacionades amb el paquet. Per exemple, quan s'executa "tea +gnu.org/wget", el gestor de paquets baixarà la utilitat wget i totes les dependències necessàries i, a continuació, proporcionarà accés a l'intèrpret d'ordres a l'entorn en què la utilitat wget instal·lada està disponible. La segona opció implica el llançament directe: "tea +gnu.org/wget wget https://some_webpage", en què la utilitat wget s'instal·larà i s'iniciarà immediatament en un entorn independent. És possible compondre cadenes complexes, per exemple, per descarregar el fitxer white-paper.pdf i processar-lo amb la utilitat glow, podeu utilitzar la següent construcció (si falten wget i glow, s'instal·laran): te + gnu.org/wget wget -qO- https://tea.xyz/white-paper.pdf | tea +charm.sh/glow glow - o podeu utilitzar una sintaxi més senzilla: tea -X wget -qO- tea.xyz/white-paper | te -X resplendor -
De la mateixa manera, podeu executar directament scripts, exemples de codi i una línia, carregant automàticament les eines necessàries per al seu funcionament. Per exemple, executar "tea https://gist.githubusercontent.com/i0bj/…/raw/colors.go -yellow" instal·larà el conjunt d'eines Go i executarà l'script colors.go amb l'argument "-yellow".
Per no cridar l'ordre tea cada vegada, és possible connectar-lo com a gestor universal d'entorns virtuals i gestor de programes que falten. En aquest cas, si el programa en execució no està disponible, s'instal·larà, i si s'ha instal·lat anteriorment, s'iniciarà al seu entorn. $ deno zsh: no s'ha trobat l'ordre: deno $ cd el meu-projecte $ deno tea: instal·lant deno.land^1.22 deno 1.27.0 > ^D
En la seva forma actual, els paquets disponibles per a Tea es recullen en dues col·leccions: pantry.core i pantry.extra, que inclouen metadades que descriuen fonts de descàrrega de paquets, scripts de compilació i dependències. La col·lecció pantry.core inclou les principals biblioteques i utilitats, mantingudes actualitzades i provades pels desenvolupadors de Tea. Pantry.extra conté paquets que no estan prou estabilitzats o que són suggerits pels membres de la comunitat. Es proporciona una interfície web per navegar pels paquets.
El procés de creació de paquets per a Tea es simplifica molt i es redueix a crear un fitxer universal package.yml (exemple), que no requereix adaptar el paquet per a cada nova versió. Un paquet pot enllaçar a GitHub per descobrir noves versions i descarregar-ne el codi. El fitxer també descriu dependències i proporciona scripts de compilació per a plataformes compatibles. Les dependències instal·lades són immutables (la versió és fixa), la qual cosa elimina la repetició de situacions semblants a l'incident del coixinet esquerre.
En el futur, es preveu crear dipòsits descentralitzats que no estiguin vinculats a cap emmagatzematge separat i utilitzar una cadena de blocs distribuïda per a metadades i una infraestructura descentralitzada per emmagatzemar paquets. Les versions seran certificades directament pels mantenedors i revisades per les parts interessades. És possible distribuir fitxes de criptomoneda per a contribucions al manteniment, suport, distribució i verificació de paquets.
Font: opennet.ru