پالت فرمان

دنبال فرمانی برای اجرا بگردید…

ZarynZaryn
بسته‌ها و میرورها·۷ دقیقه مطالعه·

شروع کار با بسته‌ها

مسیری راهنما از «بسته چیست؟» تا انتشار ایمن: یک رجیستری برای npm، PyPI، Cargo، Zig و کانتینرها، انتشار و نصب با ابزارهای همیشگی، آینه‌هایی که هر فایل را می‌سنجند، بسته‌های خصوصی و هشدارها. اول تصویر، هر گام با توضیح.

آموزش⏱ حدود ۲۵ دقیقه◔ از صفر تا پیشرفته☰ ۱۴ فصل
یاد می‌گیرید
  • بسته، رجیستری، نسخه و هش چیست و چرا می‌شود به یک نسخهٔ منتشرشده اعتماد کرد
  • انتشار برای npm، PyPI، Cargo، Zig و کانتینرها با همان ابزارهایی که می‌شناسید
  • نصب بسته‌هایتان، یا مستقیم از کامیت یک مخزن
  • نصب سریع‌تر و بررسی‌شده از راه آینه‌های Zaryn
  • بسته‌های خصوصی، yank، نام‌ها، و هشدار وقتی چیزی که به کار می‌برید ناامن است
لازم دارید
  • یک حساب Zaryn (رایگان)
  • چیزی برای انتشار، یا چیزی برای نصب
  • ابزاری که از قبل به کار می‌برید: npm، pip یا uv، cargo، zig، docker
مسیر شما
  1. مرحلهٔ ۱درک
    1. بسته چیست
    2. پنج واژه‌ای که می‌بینید
    3. چرا می‌توانید به آنچه نصب می‌کنید اعتماد کنید
  2. مرحلهٔ ۲انتشار
    1. یک توکن انتشار بگیرید
    2. ابزارتان را برگزینید
    3. نخستین بسته‌تان را منتشر کنید
  3. مرحلهٔ ۳نصب
    1. نصبش کنید
    2. نصب مستقیم از یک مخزن
    3. نصب سریع‌تر از راه آینه‌ها
  4. مرحلهٔ ۴هر چیزی را بفرستید
    1. ایمیج‌های کانتینر
    2. برنامه‌ها، دیتاست‌ها، فرم‌ور
    3. بسته‌های خصوصی، و فضا
  5. مرحلهٔ ۵ایمن بمانید
    1. وقتی چیزی که به کار می‌برید ناامن است
    2. نام‌ها، نسخه‌ها، yank
یک بار منتشر کنید، با نام نصب کنید، با همان ابزارهایی که می‌شناسید. Zaryn یک رجیستری برای npm، PyPI، Cargo، Zig، کانتینرها و فایل‌های ساده است، و یک آینه برای رجیستری‌های عمومی. همه‌چیز در صفحهٔ [Packages](/packages) است. ## ۱. بسته چیست ```diagram type: flow title: یک بار منتشر کنید، با نام نصب کنید --- کد شما | یک کتابخانه، یک ابزار، ایمیج یک برنامه | | 📦 ~ npm publish، cargo publish، docker push… رجیستری Zaryn | ذخیره‌شده با هشش، کنار مخزنی که آن را ساخت | accent | ▣ ~ npm install، pip install، cargo add… پروژهٔ هر کسی | یک فرمان، با همان ابزاری که از قبل دارند | good | ✓ ``` **بسته** کدی است که بسته‌بندی شده تا دیگران با یک فرمان از آن استفاده کنند. یک **مدیر بسته** (npm، pip، cargo، zig، docker) آن را نصب می‌کند و **رجیستری** جایی است که از آن دانلود می‌کند. Zaryn برای همهٔ آن‌ها رجیستری است، پس فقط به ابزارتان می‌گویید Zaryn کجاست. ## ۲. پنج واژه‌ای که می‌بینید ```diagram type: cards --- 🔢 | نسخه | `1.4.2`. نسخهٔ منتشرشده هرگز عوض نمی‌شود: اصلاح یعنی `1.4.3` | accent #️⃣ | هش | اثر انگشت بایت‌های یک فایل؛ ابزارتان در هر نصب آن را می‌سنجد | good 🔗 | وابستگی | بسته‌ای که پروژه‌تان به کار می‌برد؛ مدیر بسته آن را می‌آورد | 🔑 | توکن | گذرواژه‌ای برای ابزارها: انتشار به توکنی با `package:write` نیاز دارد | warn 🙈 | Yank | پنهان کردن نسخه‌ای خراب از پروژه‌های تازه؛ پروژه‌های موجود کار می‌کنند | ``` ## ۳. چرا می‌توانید به آنچه نصب می‌کنید اعتماد کنید ```diagram type: graph title: سه قفل روی هر نصب alt: نسخهٔ منتشرشده جایگزین نمی‌شود، هر فایل با هشش ذخیره و سنجیده می‌شود، و نامی که روی Zaryn هست همیشه از Zaryn می‌آید، پس هم‌نامی از رجیستری عمومی نمی‌تواند جا بزند height: 36 --- node pub | 1.4.2 منتشرشده | 12 18 | file | accent | هرگز جایگزین نمی‌شود: همان بایت‌ها، سال بعد هم node hash | هشش | 50 18 | hash | good | زیر آن ذخیره می‌شود؛ نصب‌کننده دوباره می‌سنجدش node you | نصب شما | 88 18 | laptop | good | دقیقاً همان چیزی را می‌گیرد که منتشر شد link pub hash | | path link hash you | سنجیده | path ``` سه چیز با هم: یک نسخه **جایگزین نمی‌شود**، هر فایل در ورود و خروج **با هشش سنجیده می‌شود**، و نامی که روی Zaryn هست **همیشه از Zaryn می‌آید**، پس هیچ‌کس نمی‌تواند بسته‌ای هم‌نام در یک رجیستری عمومی منتشر کند و در نصب‌های شما جا بزند (*سردرگمی وابستگی*). ## ۴. یک توکن انتشار بگیرید ```diagram type: flow title: یک بار --- صفحهٔ Packages | zaryn.xyz/packages | | ▣ ~ Create a publish token توکن | همین حالا کپی‌اش کنید؛ `package:write` دارد | warn | 🔑 ~ به ابزارتان بدهید آماده | `.npmrc`، `~/.pypirc`، `cargo login`، `docker login` | good | ✓ ``` با توکن مثل گذرواژه رفتار کنید: آن را از مخزن‌های عمومی دور نگه دارید (ابزارها می‌توانند از متغیر محیطی بخوانندش) و اگر لو رفت تازه‌اش را بسازید. ## ۵. ابزارتان را برگزینید ```diagram type: cards title: یک ایده، شش ابزار --- 🟩 | npm | scope `@you` در `.npmrc`، سپس `npm publish --access public` | accent 🐍 | PyPI | `python -m build`، سپس `twine upload` به index زرین | 🦀 | Cargo | یک بار `[registries.zaryn]`، سپس `cargo publish --registry zaryn` | ⚡ | Zig | بسته را بارگذاری کنید؛ Zaryn نشانی و هشی را که `zig fetch` می‌خواهد می‌دهد | 🐳 | کانتینرها | `docker push zaryn.xyz/you/app:1.0` | good 📄 | هر فایلی | `curl -T` به یک نشانی ثابت: برنامه، دیتاست، فرم‌ور | ``` هر ابزار راهنمای خودش را با همهٔ گام‌ها دارد: [npm](/docs/fa/packages-npm)، [PyPI](/docs/fa/packages-pypi)، [Rust](/docs/fa/packages-rust)، [Zig](/docs/fa/packages-zig)، [کانتینرها](/docs/fa/packages-containers)، [فایل‌ها](/docs/fa/packages-files). ## ۶. نخستین بسته‌تان را منتشر کنید یک بستهٔ npm، از آغاز تا پایان: ```ini # .npmrc in your project @your-username:registry=https://api.zaryn.xyz/v1/packages/npm/ //api.zaryn.xyz/v1/packages/npm/:_authToken=${NPM_TOKEN} ``` ```json { "name": "@your-username/hello", "version": "0.1.0", "main": "index.js" } ``` ```bash npm publish --access public ``` ```diagram type: graph title: فقط scope شما به Zaryn می‌رود alt: npm بسته‌های @your-username را به Zaryn و بقیه را به npmjs.com می‌فرستد height: 36 --- node npm | npm | 12 18 | laptop | accent | `.npmrc` را می‌خواند تا بداند هر بسته از کجا بیاید node z | Zaryn | 60 6 | cloud | good | `@your-username/…` node pub | npmjs.com | 60 30 | cloud | | بقیه، مثل قبل link npm z | @your-username/hello | path link npm pub | react, lodash… | path2 ``` برای انتشار یک اصلاح، `version` را بالا ببرید و دوباره منتشر کنید. بدون `--access public`، npm یک بستهٔ خصوصی می‌خواهد که پریمیوم لازم دارد. ## ۷. نصبش کنید ```bash npm install @your-username/hello # npm, pnpm, yarn pip install your-package # with Zaryn's index set once cargo add your-crate --registry zaryn docker pull zaryn.xyz/you/app:1.0 ``` کاربرانتان یک بار، همان‌طور که شما کردید، Zaryn را تنظیم می‌کنند و سپس مثل همیشه نصب می‌کنند. بسته‌ها و ایمیج‌های عمومی برای نصب توکن نمی‌خواهند. ## ۸. نصب مستقیم از یک مخزن ```diagram type: flow title: بی گام انتشار --- یک کامیت | هر کامیت از مخزنی با package.json، pyproject یا build.zig.zon | | ⎇ ~ زبانهٔ install یک نشانی | آرشیو ثابتی از دقیقاً همان کامیت | accent | 🔗 ~ npm install …، pip install … سنجاق‌شده | پروژهٔ شما دقیقاً همان کامیت را به کار می‌برد | good | 📌 ``` زبانهٔ **install** مخزن، کنار فرمان‌های کلون، خط هر ابزار را می‌دهد. برای آزمودن یک اصلاح پیش از انتشار خوب است. ## ۹. نصب سریع‌تر از راه آینه‌ها ```diagram type: graph title: یک فرمان، همهٔ ابزارها از راه Zaryn alt: zev mirror on ابزارهای pip، npm، go، cargo و rustup را به آینه‌های Zaryn می‌فرستد که هر فایل را با هش منتشرشده‌اش می‌سنجند height: 40 --- node zev | zev mirror on | 12 20 | ci | accent | یک بلوک نشان‌دار به تنظیمات هر ابزار می‌افزاید؛ `zev mirror off` آن را برمی‌دارد node tools | pip, uv, npm, go, cargo, rustup, zig | 50 20 | laptop | | node m | آینه‌های Zaryn | 88 20 | cloud | good | هر فایل با هشی که pypi.org، npm یا crates.io فهرست کرده سنجیده می‌شود link zev tools | | path link tools m | | path2 ``` ```bash zev mirror on # or pick some: zev mirror on pip cargo ``` نصب از pypi.org، npmjs.com، crates.io یا گیت‌هاب کند است یا جایی که هستید مسدود است؟ آینه‌ها یک بار می‌آورند و از Zaryn می‌دهند، و چون هر فایل با هشی سنجیده می‌شود که ابزارهایتان از قبل می‌شناسند، آینه نمی‌تواند چیزی را عوض کند. [آینه‌ها](/docs/fa/package-mirrors). ## ۱۰. ایمیج‌های کانتینر ```diagram type: flow title: از لپ‌تاپ تا خوشه --- docker build | `zaryn.xyz/you/app:1.0`: رجیستری، مالک، ایمیج، برچسب | | 🛠 ~ docker push روی Zaryn | فقط لایه‌هایی که Zaryn ندارد بارگذاری می‌شوند | accent | ⇡ ~ docker pull، Kubernetes در حال اجرا | ایمیج عمومی بی‌ورود؛ خصوصی با یک کلید فقط‌خواندنی | good | ▶ ``` چارت‌های Helm و دیگر artifactهای OCI کنار ایمیج‌ها می‌مانند. ایمیجی که [CI](/docs/fa/get-started-ci) بسازد گواهی منشأ امضاشده و SBOM هم می‌گیرد. ## ۱۱. برنامه‌ها، دیتاست‌ها، فرم‌ور ```bash curl -T mytool-1.0.0-linux.tar.gz -H "Authorization: Bearer $ZARYN_TOKEN" \ https://api.zaryn.xyz/v1/packages/generic/mytool/1.0.0/mytool-1.0.0-linux.tar.gz ``` هر چه بستهٔ یک زبان نیست به یک **نشانی ثابت** می‌رود: نام، نسخه، فایل. پس از بارگذاری، آن نشانی همیشه همان بایت‌ها را می‌دهد و پاسخ SHA-256 را هم دارد تا کنار دانلود منتشرش کنید. ## ۱۲. بسته‌های خصوصی، و فضا ```diagram type: stats --- 500 MB | رایگان: بسته‌ها و ایمیج‌ها | بسته‌های عمومی؛ آینه‌ها رایگان‌اند | 1 | 100 GB | پریمیوم | بسته‌ها و ایمیج‌های خصوصی هم | 100 | accent 0 | هزینهٔ بسته‌های دیگران برای شما | نصب بسته‌های عمومی هرگز حساب نمی‌شود | | good ``` در پریمیوم یک بسته یا ایمیج می‌تواند خصوصی باشد: فقط شما یا سازمانتان می‌توانید ببینید یا نصبش کنید، با همان توکن. [طرح‌ها](/docs/fa/billing-and-credits). ## ۱۳. وقتی چیزی که به کار می‌برید ناامن است ```diagram type: flow title: هشداری به پروژهٔ شما می‌رسد --- ثبت‌شده | مالکی کامیت‌های آسیب‌دیده را علامت می‌زند: دادهٔ مسموم، در پشتی، مجوز نادرست | bad | ⚠ ~ تبار دنبال می‌شود خبردار می‌شوید | مالکان هر چه از آن‌ها ساخته شده، با یک حکم، خبر می‌گیرند | warn | 🔔 ~ در CI مسدود | `"advisories": {"fail_on": "high"}` ساخت روی آن را متوقف می‌کند | good | 🛡 ``` Zaryn تبار ثبت‌شده را دنبال می‌کند (آموزش‌دیده روی، fine-tune شده از، برگرفته از، به کار می‌برد)، پس یک هشدار به هر مخزنی که از کامیت‌های آسیب‌دیده ساخته شده می‌رسد و [CI](/docs/fa/get-started-ci) می‌تواند تا وقتی یکی به مخزن شما می‌رسد از ساخت خودداری کند. [هشدارها](/docs/fa/advisories). ## ۱۴. نام‌ها، نسخه‌ها، yank ```diagram type: cards --- 🏷 | نام‌ها | هر که زودتر آمد، جدا برای هر نوع؛ فقط شما نسخه‌های تازهٔ نام خودتان را منتشر می‌کنید | accent 🔢 | نسخه‌ها | هرگز جایگزین نمی‌شوند: اصلاح یعنی نسخهٔ تازه | 🙈 | Yank | پنهان کردن نسخه‌ای خراب از نصب‌های تازه؛ پروژه‌هایی که به آن سنجاق‌اند کار می‌کنند | warn 📦 | یک جا | همهٔ بسته‌ها و ایمیج‌هایتان، با فضایشان، در صفحهٔ Packages | good ``` بعد: راهنمای ابزارتان، [آینه‌ها](/docs/fa/package-mirrors) با جزئیات، و [هشدارها](/docs/fa/advisories).
آموزش را به پایان رساندید

از اینجا کجا بروید