Творець brew розвиває новий пакетний менеджер tea

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

Надалі планується створення децентралізованих репозиторіїв, які не прив'язані до якогось окремого сховища і використовують для метаданих розподілений блокчейн, а для зберігання пакетів децентралізовану інфраструктуру. Релізи завірятимуться безпосередньо супроводжуючими та рецензуватимуться зацікавленими особами. Передбачено можливість розподілу криптовалютних токенів за внесок у супровід, підтримку, розповсюдження та перевірку пакетів.

Творець brew розвиває новий пакетний менеджер tea


Джерело: opennet.ru

Додати коментар або відгук