Ang gumawa ng brew ay gumagawa ng bagong package manager tea

Si Max Howell, ang may-akda ng sikat na macOS package management system brew (Homebrew), ay bumubuo ng isang bagong manager ng package na tinatawag na Tea, na nakaposisyon bilang isang pagpapatuloy ng pagbuo ng brew, na lumalampas sa package manager at nag-aalok ng pinag-isang imprastraktura ng pamamahala ng package na gumagana. na may mga desentralisadong repositoryo. Ang proyekto ay unang binuo bilang isang multi-platform na proyekto (ang macOS at Linux ay kasalukuyang sinusuportahan, ang suporta sa Windows ay nasa pagbuo). Ang code ng proyekto ay nakasulat sa TypeScript at ipinamahagi sa ilalim ng lisensya ng Apache 2.0 (isinulat ang brew sa Ruby at ipinamahagi sa ilalim ng lisensya ng BSD).

Ang tsaa ay hindi tulad ng tradisyonal na mga tagapamahala ng pakete at sa halip na "Gusto kong mag-install ng isang pakete" na paradigm, ginagamit nito ang paradigm na "Gusto kong gumamit ng isang pakete". Sa partikular, ang Tea ay walang utos na mag-install ng isang pakete tulad nito, ngunit sa halip ay gumagamit ng pagbuo ng kapaligiran upang maisagawa ang mga nilalaman ng pakete na hindi nagsasapawan sa kasalukuyang sistema. Ang mga pakete ay inilalagay sa isang hiwalay na direktoryo ng ~/.tea at hindi nakatali sa mga ganap na landas (maaari silang ilipat).

Dalawang pangunahing mode ng operasyon ang ibinibigay: pagpunta sa isang command shell na may access sa kapaligiran na may naka-install na mga pakete, at direktang pagtawag sa mga command na nauugnay sa package. Halimbawa, kapag nag-execute ng "tea +gnu.org/wget", ida-download ng package manager ang wget utility at lahat ng kinakailangang dependencies, at pagkatapos ay magbibigay ng shell access sa kapaligiran kung saan available ang naka-install na wget utility. Ang pangalawang opsyon ay nagsasangkot ng direktang paglulunsad - "tea +gnu.org/wget wget https://some_webpage", kung saan ang wget utility ay mai-install at agad na ilulunsad sa isang hiwalay na kapaligiran. Posibleng bumuo ng mga kumplikadong chain, halimbawa, upang i-download ang white-paper.pdf file at iproseso ito gamit ang glow utility, maaari mong gamitin ang sumusunod na konstruksyon (kung nawawala ang wget at glow, mai-install ang mga ito): tea + gnu.org/wget wget -qO- https:/ /tea.xyz/white-paper.pdf | tea +charm.sh/glow glow - o maaari kang gumamit ng mas simpleng syntax: tea -X wget -qO- tea.xyz/white-paper | tsaa -X glow -

Sa katulad na paraan, maaari kang direktang magpatakbo ng mga script, mga halimbawa ng code, at one-liner, na awtomatikong naglo-load ng mga tool na kinakailangan para sa kanilang operasyon. Halimbawa, ang pagpapatakbo ng "tea https://gist.githubusercontent.com/i0bj/…/raw/colors.go -yellow" ay mag-i-install ng Go toolkit at isasagawa ang script ng colors.go na may argumentong "-yellow".

Upang hindi tawagan ang utos ng tsaa sa bawat oras, posible na ikonekta ito bilang isang unibersal na tagapamahala ng mga virtual na kapaligiran at isang handler para sa mga nawawalang programa. Sa kasong ito, kung hindi magagamit ang tumatakbong programa, mai-install ito, at kung na-install ito dati, ilulunsad ito sa kapaligiran nito. $ deno zsh: command not found: deno $ cd my-project $ deno tea: pag-install ng deno.land^1.22 deno 1.27.0 > ^D

Sa kasalukuyang anyo nito, ang mga package na available para sa Tea ay kinokolekta sa dalawang koleksyon - pantry.core at pantry.extra, na kinabibilangan ng metadata na naglalarawan ng mga source ng pag-download ng package, bumuo ng mga script at dependencies. Kasama sa koleksyon ng pantry.core ang mga pangunahing aklatan at kagamitan, na pinapanatili hanggang sa petsa at sinubukan ng mga developer ng Tea. Ang Pantry.extra ay naglalaman ng mga pakete na hindi sapat na nagpapatatag o na iminungkahi ng mga miyembro ng komunidad. Ang isang web interface ay ibinigay upang mag-navigate sa mga pakete.

Ang proseso ng paggawa ng mga package para sa Tea ay lubos na pinasimple at bumababa sa paglikha ng isang unibersal na package.yml file (halimbawa), na hindi nangangailangan ng pag-adapt ng package para sa bawat bagong bersyon. Maaaring mag-link ang isang package sa GitHub upang tumuklas ng mga bagong bersyon at i-download ang kanilang code. Inilalarawan din ng file ang mga dependency at nagbibigay ng mga build script para sa mga sinusuportahang platform. Ang mga naka-install na dependencies ay hindi nababago (ang bersyon ay naayos), na nag-aalis ng pag-uulit ng mga sitwasyon na katulad ng insidente sa kaliwa.

Sa hinaharap, pinlano na lumikha ng mga desentralisadong repositoryo na hindi nakatali sa anumang hiwalay na imbakan at gumamit ng isang distributed blockchain para sa metadata, at isang desentralisadong imprastraktura para sa pag-iimbak ng mga pakete. Direktang certified ng mga maintainer ang mga release at susuriin ng mga stakeholder. Posibleng ipamahagi ang mga token ng cryptocurrency para sa mga kontribusyon sa pagpapanatili, suporta, pamamahagi at pag-verify ng mga pakete.

Ang gumawa ng brew ay gumagawa ng bagong package manager tea


Pinagmulan: opennet.ru

Magdagdag ng komento