| CARGO-YANK(1) | General Commands Manual | CARGO-YANK(1) |
نام (NAME)
cargo-yank - حذف یک کریت ارسالشده از نمایه
خلاصه دستور (SYNOPSIS)
cargo yank [options] crate@version
cargo yank [options] --version version
[crate]
توضیحات (DESCRIPTION)
دستور yank نسخهٔ یک کریت که قبلاً منتشر شده است را از نمایهٔ (index) کارساز حذف میکند. این دستور هیچ دادهای را پاک نمیکند و کریت همچنان از طریق پیوند بارگیری مخزن (registry) برای دانلود در دسترس خواهد بود.
ابزار Cargo از نسخهٔ yankشده برای هیچ پروژهٔ جدید یا دریافت کدی (checkout) بدون فایل قفل (lockfile) از پیش موجود استفاده نخواهد کرد، و اگر دیگر هیچ نسخهٔ سازگاری برای کریت شما وجود نداشته باشد، یک خطا تولید میکند.
این دستور مستلزم آن است که هویت شما با گزینهٔ --token یا با استفاده از cargo-login(1) احراز شده باشد.
اگر نام کریت مشخص نشود، از نام بسته در دایرکتوری جاری استفاده خواهد شد.
نحوه کارکرد yank
به عنوان مثال، کریت foo نسخهٔ 1.5.0 را منتشر کرده و کریت دیگری به نام bar وابستگی خود را به نسخهٔ foo = "1.5" اعلام کرده است. اکنون foo نسخهٔ جدید 2.0.0 را که از نظر semver سازگار نیست منتشر میکند، و متوجه یک مشکل بحرانی در 1.5.0 میشود. اگر 1.5.0 اصطلاحاً yank شود، هیچ پروژهٔ جدید یا checkout بدون lockfile موجود قادر به استفاده از کریت bar نخواهد بود زیرا به 1.5 متکی است.
در این حالت، نگهدارندگان foo باید پیش از yank کردن 1.5.0، ابتدا یک نسخهٔ سازگار با semver مانند 1.5.1 را منتشر کنند تا bar و تمام پروژههای وابسته به آن همچنان به کار خود ادامه دهند.
به عنوان مثالی دیگر، کریت bar را با نسخههای منتشرشدهٔ 1.5.0، 1.5.1، 1.5.2، 2.0.0 و 3.0.0 در نظر بگیرید. جدول زیر نسخههایی را که cargo میتواند در صورت نبود lockfile پس از yank شدن یک نسخهٔ مشخص، برای نیازمندیهای مختلف SemVer استفاده کند، مشخص میکند:
| نسخهٔ yankشده / نیازمندی SemVer | bar = "1.5.0" | bar = "=1.5.0" | bar = "2.0.0" |
| 1.5.0 | استفاده از 1.5.1 یا 1.5.2 | بازگرداندن خطا | استفاده از 2.0.0 |
| 1.5.1 | استفاده از 1.5.0 یا 1.5.2 | استفاده از 1.5.0 | استفاده از 2.0.0 |
| 2.0.0 | استفاده از 1.5.0، 1.5.1 یا 1.5.2 | استفاده از 1.5.0 | بازگرداندن خطا |
چه زمانی باید yank کرد
کریتها تنها باید در شرایط استثنایی yank شوند؛ به عنوان مثال، انتشار تصادفی، ناسازگاری ناخواستهٔ SemVer، یا معیوب بودن اساسی و غیرقابل استفاده بودن یک کریت. در صورت وجود آسیبپذیریهای امنیتی، RustSec https://rustsec.org معمولاً سازوکاری با اختلال کمتر برای آگاهسازی کاربران و تشویق آنها به ارتقا است، و از احتمال ایجاد اختلال عمده در پروژههای پاییندستی صرفنظر از میزان تأثیرپذیری آنها از آسیبپذیری مربوطه جلوگیری میکند.
یک جریان کاری معمول این است که پس از انتشار یک نسخهٔ سازگار با semver، کریت yank شود تا احتمال جلوگیری از کامپایل کریتهای وابسته کاهش یابد.
هنگام رسیدگی به مسائل مربوط به حق نشر (کپیرایت)، مجوزها، یا دادههای شخصی در یک کریت منتشرشده، صرفاً yank کردن آن ممکن است کافی نباشد. در چنین مواردی، با نگهدارندگان مخزنی که استفاده کردهاید تماس بگیرید. برای crates.io، به خطمشیهای آنها https://crates.io/policies مراجعه کرده و از طریق <help@crates.io> با آنها ارتباط برقرار کنید.
اگر اطلاعات احراز هویت (credentials) افشا شده باشد، اقدام توصیهشده ابطال فوری آنها است. هنگامی که یک کریت منتشر شد، تعیین اینکه آیا اطلاعات احراز هویت افشاشده کپی شدهاند یا خیر غیرممکن است. عمل yank فقط مانع از آن میشود که Cargo بهطور پیشفرض این نسخه را هنگام حل وابستگیها انتخاب کند. فایلهای lock موجود یا دانلودهای مستقیم تحت تأثیر قرار نمیگیرند، بنابراین yank کردن نمیتواند جلوی انتشار بیشتر اطلاعات احراز هویت افشاشده را بگیرد.
گزینهها (OPTIONS)
گزینههای Yank
--vers version, --version version
--undo
--token token
متغیرهای محیطی پیکربندی Cargo https://doc.rust-lang.org/cargo/reference/config.html میتوانند برای جایگزینی توکنهای ذخیرهشده در فایل اعتبارسنجی استفاده شوند. توکن برای crates.io را میتوان با متغیر محیطی CARGO_REGISTRY_TOKEN تعیین کرد. توکنهای سایر مخازن را میتوان با متغیرهای محیطی به قالب CARGO_REGISTRIES_NAME_TOKEN مشخص نمود که در آن NAME نام مخزن با تمام حروف بزرگ است.
--index index
--registry registry
گزینههای نمایش
-v, --verbose
-q, --quiet
--color when
همچنین میتواند با مقدار پیکربندی https://doc.rust-lang.org/cargo/reference/config.html به نام term.color تعیین شود.
گزینههای عمومی
+toolchain
--config KEY=VALUE یا PATH
-C PATH
این گزینه فقط در کانال nightly https://doc.rust-lang.org/book/appendix-07-nightly-rust.html در دسترس است و برای فعالسازی به پرچم -Z unstable-options نیاز دارد (به #10098 https://github.com/rust-lang/cargo/issues/10098 مراجعه کنید).
-h, --help
-Z flag
محیط (ENVIRONMENT)
برای جزئیات بیشتر دربارهٔ متغیرهای محیطی که Cargo میخواند، به مرجع https://doc.rust-lang.org/cargo/reference/environment-variables.html مراجعه کنید.
وضعیت خروج (EXIT STATUS)
مثالها (EXAMPLES)
cargo yank foo@1.0.7