Tea entwickelt neue Technologien, die die Art und Weise verändern werden, wie Code verteilt wird
Max Howell, der Autor des beliebten macOS-Homebrew-Paketverwaltungssystems brew , kündigte an, dass er an der Entwicklung eines neuen Paketmanagers namens Tea arbeitet, der als Fortsetzung der Entwicklung von brew positioniert ist und über den Paketmanager hinausgeht und eine einheitliche Paketverwaltungsinfrastruktur bietet, die mit dezentralen Repositories funktioniert.
Tea ist konzeptionell nicht mit traditionellen Paketmanagern vergleichbar und verwendet anstelle des Paradigmas „Ich möchte ein Paket installieren“ den Ansatz „Ich möchte ein Paket verwenden“.
Tea verfügt nicht über einen Befehl zur Paketinstallation im eigentlichen Sinne; stattdessen generiert es eine Umgebung, um Paketinhalte auszuführen, die sich nicht mit dem aktuellen System überschneiden. Pakete werden in einem separaten Verzeichnis ~/.tea abgelegt und haben keine absoluten Pfade (sie können verschoben werden).
Tea bietet zwei grundlegende Betriebsmodi: den Wechsel zu einer Befehlsshell mit Zugriff auf eine Umgebung mit installierten Paketen und den direkten Aufruf von paketbezogenen Befehlen. Beispielsweise bewirkt der Befehl „tea +gnu.org/wget“, dass der Paketmanager das wget-Dienstprogramm und alle erforderlichen Abhängigkeiten herunterlädt und anschließend Shell-Zugriff in einer Umgebung ermöglicht, in der das installierte wget-Dienstprogramm verfügbar ist.
Die zweite Option beinhaltet einen direkten Start: ` tea +gnu.org/wget -qO- tea.xyz/white-paper | tea +charm.sh/glow glow -`. Dadurch wird das wget-Dienstprogramm installiert und sofort in einer separaten Umgebung ausgeführt. Es lädt eine Datei herunter, die anschließend mit glow gerendert wird. Eine komplexere Abfolge ist möglich; um beispielsweise die Datei `white-paper.pdf` herunterzuladen und mit glow zu verarbeiten, können Sie den folgenden Befehl verwenden (falls wget und glow noch nicht installiert sind, werden sie installiert).
Ebenso können Sie Skripte , Codebeispiele und clevere Phrasen direkt ausführen, wobei die für die jeweilige Aufgabe benötigten Tools automatisch geladen werden.
Führen Sie für kein Beispiel Folgendes aus:
tea https://gist.githubusercontent.com/i0bj/2b3afbe07a44179250474b5f36e7bd9b/raw/colors.go --yellow
tea: installing go 1.18.3
go: installing deps
go: running colors.go
…
Es installiert das Go-Sprach-Toolkit und führt das Skript colors.go mit dem Argument „–yellow“ aus.
Um den Befehl `tea` nicht jedes Mal aufrufen zu müssen, können Sie ihn als universellen virtuellen Umgebungsmanager und Fehlerbehandlungsroutine für fehlende Programme einbinden. In diesem Fall wird das laufende Programm installiert, falls es nicht verfügbar ist, und falls es bereits installiert ist, wird es in Ihrer Umgebung gestartet.
In der aktuellen Form sind die für Tea verfügbaren Pakete in zwei Sammlungen zusammengefasst , pantry.core und pantry.extra . Diese enthalten Metadaten, die die Downloadquellen der Pakete, die Build-Skripte und die Abhängigkeiten beschreiben.
Die Sammlung pantry.core enthält Kernbibliotheken und Hilfsprogramme, die von den Tea-Entwicklern aktualisiert und getestet werden. pantry.extra enthält Pakete, die noch nicht ausreichend stabil sind oder von der Community vorgeschlagen wurden. Über eine Weboberfläche können die Pakete durchsucht werden.
Der Prozess der Paketerstellung für Tea wird stark vereinfacht und auf die Erstellung einer universellen package.yml-Datei (Beispiel) reduziert, wodurch das Paket nicht für jede neue Version angepasst werden muss. Um neue Versionen zu entdecken und den Code herunterzuladen, kann das Paket mit GitHub verlinkt werden.
Die Datei beschreibt auch Abhängigkeiten und stellt Build-Skripte für unterstützte Plattformen bereit. Installierte Abhängigkeiten sind unveränderlich (Version ist behoben), wodurch sich wiederholende Situationen, die dem Vorfall mit dem linken Pad ähneln, eliminiert werden.
Zukünftig sollen dezentrale Repositories geschaffen werden, die nicht an separate Speichersysteme gebunden sind. Metadaten sollen auf einer verteilten Blockchain und Pakete auf einer dezentralen Infrastruktur gespeichert werden. Versionen werden direkt von den Maintainern zertifiziert und von Stakeholdern geprüft. Es ist denkbar, Kryptowährungstoken auszugeben, um die Wartung, den Support, die Verbreitung und die Verifizierung von Paketen zu unterstützen.
Abschließend sei erwähnt, dass das Projekt aktuell als plattformübergreifende Anwendung entwickelt wird (macOS und Linux werden derzeit unterstützt, die Windows-Unterstützung ist in Arbeit). Der Projektcode ist in TypeScript geschrieben und unter der Apache-2.0-Lizenz veröffentlicht (brew wurde in Ruby geschrieben und unter einer BSD-Lizenz veröffentlicht).
Wenn Sie mehr erfahren möchten, können Sie die Details und die Bedienungsanleitung für Tee unter folgendem Link einsehen.