Создатель brew развивает новый пакетный менеджер tea

6 декабря 2022 года

Логотип Homebrew.

Макс Хауэлл (англ. Max Howell), автор популярной на платформе macOS системы управления пакетами brew (Homebrew), развивает новый пакетный менеджер Tea, позиционируемый как продолжение развития brew, выходящее за рамки пакетного менеджера и предлагающее унифицированную инфраструктуру управления пакетами, работающую с децентрализованными репозиториями. Проект изначально развивается как многоплатформенный (в настоящее время поддерживаются macOS и Linux, в разработке поддержка Windows). Код проекта написан на языке TypeScript и распространяется под лицензией Apache 2.0 (brew был написан на Ruby и поставлялся под лицензией BSD).

Tea концептуально не походит на традиционные пакетные менеджеры и вместо парадигмы «я хочу установить пакет» использует принцип «я хочу использовать пакет». В частности, в Tea нет как таковой команды для установки пакета, вместо которой применяется формирование окружения для выполнения содержимого пакета, не пересекающегося с текущей системой. Пакеты размещаются в отдельном каталоге ~/.tea и не привязываются к абсолютным путям (могут быть перемещены).

Предоставляется два основных режима работы: переход в командную оболочку с доступом к окружению с установленными пакетами и прямой вызов связанных с пакетом команд. Например, при выполнении «tea +gnu.org/wget» пакетный менеджер загрузит утилиту wget и все необходимые зависимости, после чего предоставит shell-доступ в окружении, в котором доступна установленная утилита wget. Второй вариант подразумевает прямой запуск — «tea +gnu.org/wget wget https://some_webpage»(недоступная ссылка), при котором будет установлена утилита wget и сразу запущена в отдельном окружении. Возможна компоновка сложных цепочек, например, для загрузки файла white-paper.pdf и его обработки утилитой glow можно использовать следующую конструкцию (если wget и glow отсутствуют, они будут установлены):

 
tea +gnu.org/wget wget -qO- https://tea.xyz/white-paper.pdf | tea +charm.sh/glow glow -

или можно использовать более простой синтаксис:

 
tea -X wget -qO- tea.xyz/white-paper | tea -X glow -

Похожим образом можно напрямую запускать скрипты, примеры кода и однострочники, автоматически подгружая необходимый для их работы инструментарий. Например, выполнение «tea https://gist.githubusercontent.com/i0bj/.../raw/colors.go(недоступная ссылка) --yellow» приведёт к установке инструментария языка Go и выполнению скрипта colors.go с аргументом «--yellow».

Чтобы не вызывать команду tea каждый раз предоставляется возможность её подключения как универсального менеджера виртуальных окружений и обработчика отсутствующих программ. В этом случае если запущенная программа недоступна, она будет установлена, а если устанавливалась ранее — запущена в своём окружении.

 
$ deno
   zsh: command not found: deno

$ cd my-project
$ deno
   tea: installing deno.land^1.22
   deno 1.27.0
   > ^D

В текущем виде доступные для Tea пакеты собраны в двух коллекциях — pantry.core и pantry.extra, которые включают метаданные, описывающие источники загрузки пакетов, сценарии сборки и зависимости. Коллекция pantry.core включает основные библиотеки и утилиты, поддерживаемые в актуальном виде и протестированные разработчиками Tea. В pantry.extra помещаются недостаточно стабилизированные пакеты или пакеты, предлагаемые представителями сообщества. Для навигации по пакетам предоставлен web-интерфейс.

Процесс создания пакетов для Tea сильно упрощён и сводится к созданию одного универсального файла package.yml (пример), не требующего адаптации пакета для каждой новой версии. Для обнаружения новых версий и для загрузки их кода пакет может ссылаться на GitHub. В файле также описываются зависимости и приводятся сценарии сборки для поддерживаемых платформ. Устанавливаемые зависимости неизменяемы (фиксируется версия), что исключает повторение ситуаций, похожих на инцидент с left-pad.

В дальнейшем планируется создание децентрализованных репозиториев, не привязанных к какому-то отдельному хранилищу и использующих для метаданных распределённый блокчейн, а для хранения пакетов децентрализованную инфраструктуру. Релизы будут заверяться напрямую сопровождающими и рецензироваться заинтересованными лицами. Предусмотрена возможность распределения криптовалютных токенов за вклад в сопровождение, поддержку, распространение и проверку пакетов.

Источники

править
 
 
Creative Commons
Эта статья содержит материалы из статьи «Создатель brew развивает новый пакетный менеджер tea», опубликованной OpenNET и распространяющейся на условиях лицензии Creative Commons Attribution (CC BY) — указание автора, источник и лицензию.

Комментарии

Викиновости и Wikimedia Foundation не несут ответственности за любые материалы и точки зрения, находящиеся на странице и в разделе комментариев.