il-kreatur tal-birra jiżviluppa maniġer ġdid tal-pakketti tat-te

Макс Хауэлл (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.

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

il-kreatur tal-birra jiżviluppa maniġer ġdid tal-pakketti tat-te


Sors: opennet.ru

Żid kumment