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

Discussion in 'Мировые новости. Обсуждения.' started by Suicide, 5 Dec 2022.

  1. Suicide

    Suicide Super Moderator
    Staff Member

    Joined:
    24 Apr 2009
    Messages:
    2,482
    Likes Received:
    7,027
    Reputations:
    693
    Макс Хауэлл (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 отсутствуют, они будут установлены):

    Code:
    tea +gnu.org/wget wget -qO- https://tea.xyz/white-paper.pdf | tea +charm.sh/glow glow -
    или можно использовать более простой синтаксис:
    Code:
    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 каждый раз предоставляется возможность её подключения как универсального менеджера виртуальных окружений и обработчика отсутствующих программ. В этом случае если запущенная программа недоступна, она будет установлена, а если устанавливалась ранее - запущена в своём окружении.
    Code:
     $ 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.

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

    [​IMG]

     
    _________________________
    dooble, CyberTro1n and user100 like this.
Loading...