| CARGO-INSTALL(1) | General Commands Manual | CARGO-INSTALL(1) |
نام (NAME)
cargo-install - ساخت و نصب باینری Rust
خلاصه دستور (SYNOPSIS)
cargo install
[گزینهها]
crate[@version]…
cargo install
[گزینهها]
--path path
cargo install
[گزینهها]
--git url [crate…]
cargo install
[گزینهها]
--list
توضیحات (DESCRIPTION)
این دستور مجموعهٔ محلی کریتهای باینری نصبشده توسط Cargo را مدیریت میکند. تنها بستههایی که دارای هدفهای اجرایی [[bin]] یا [[example]] هستند قابلیت نصب دارند، و تمامی فایلهای اجرایی در پوشهٔ bin واقع در ریشهٔ نصب قرار میگیرند. بهطور پیشفرض تنها باینریها نصب میشوند و نمونهها (examples) نصب نخواهند شد.
ریشهٔ نصب به ترتیب اولویت زیر تعیین میشود:
منابع متعددی وجود دارند که میتوان یک کریت را از آنها نصب کرد. منبع پیشفرض crates.io است، اما پرچمهای --git، --path و --registry میتوانند این منبع را تغییر دهند. اگر منبع حاوی بیش از یک بسته باشد (مانند crates.io یا یک مخزن git با چندین کریت)، آرگومان crate برای مشخص کردن اینکه کدام کریت باید نصب شود الزامی است.
کریتهای دریافتشده از crates.io میتوانند به صورت اختیاری نسخهٔ مورد نظر را از طریق پرچم --version تعیین کنند، و به همین ترتیب بستههای حاصل از مخازن git نیز میتوانند شاخه، برچسب یا بازبینی (revision) مد نظر را مشخص نمایند. اگر یک کریت دارای چندین باینری باشد، با استفاده از آرگومان --bin میتوان تنها یکی از آنها را به صورت گزینشی نصب کرد؛ همچنین در صورت تمایل به نصب نمونهها، میتوان از آرگومان --example استفاده نمود.
اگر بسته از قبل نصب شده باشد، در صورتی که نسخهٔ نصبشده بهروز به نظر نرسد، Cargo آن را مجدداً نصب خواهد کرد. در صورت تغییر هر یک از مقادیر زیر، Cargo اقدام به نصب مجدد بسته میکند:
نصب با --path همیشه عملیات ساخت و نصب را انجام میدهد، مگر اینکه باینریهای تداخلداری از یک بستهٔ دیگر وجود داشته باشند. پرچم --force میتواند برای اجبار Cargo به نصب مجدد بسته در هر شرایطی استفاده شود.
اگر منبع crates.io یا --git باشد، کریت بهطور پیشفرض در یک دایرکتوری مقصد موقت ساخته خواهد شد. برای جلوگیری از این رفتار، دایرکتوری مقصد را میتوان با تنظیم متغیر محیطی CARGO_TARGET_DIR روی یک مسیر دلخواه مشخص کرد. این کار بهویژه برای کش کردن خروجیهای ساخت در سامانههای یکپارچهسازی مداوم (CI) کاربرد دارد..SS "کار با فایل قفل (Dealing with the Lockfile)" بهطور پیشفرض، فایل Cargo.lock که همراه با بسته قرار دارد نادیده گرفته خواهد شد. این بدان معناست که Cargo مجدداً محاسبه خواهد کرد که از کدام نسخههای وابستگیها استفاده کند، و احتمالاً از نسخههای جدیدتری که از زمان انتشار بسته منتشر شدهاند استفاده میکند. پرچم --locked میتواند برای وادار کردن Cargo به استفاده از فایل Cargo.lock موجود در بسته (در صورت وجود) به کار رود. این ویژگی میتواند برای اطمینان از ساختهای بازتولیدپذیر (reproducible builds) و استفاده از همان مجموعه دقیق وابستگیهایی که هنگام انتشار بسته در دسترس بودند، مفید باشد. همچنین اگر نسخه جدیدتری از یک وابستگی منتشر شود که دیگر روی سیستم شما ساخته نمیشود یا مشکلات دیگری دارد، کاربردی است. نکته منفی استفاده از --locked این است که هیچگونه اصلاحیه یا بهروزرسانی برای هیچیک از وابستگیها دریافت نخواهید کرد. توجه داشته باشید که Cargo تا نسخه 1.37 شروع به انتشار فایلهای Cargo.lock نکرد؛ بدین معنا که بستههای منتشرشده با نسخههای پیشین، فایل Cargo.lock در دسترس نخواهند داشت.
کشف پیکربندی (Configuration Discovery)
این دستور در سطح سیستم یا کاربر عمل میکند، نه در سطح پروژه. این یعنی کشف پیکربندی محلی https://doc.rust-lang.org/cargo/reference/config.html#hierarchical-structure نادیده گرفته میشود. در عوض، کشف پیکربندی از $CARGO_HOME/config.toml آغاز میشود. اگر بسته با --path $PATH نصب شود، پیکربندی محلی استفاده خواهد شد که کشف آن از $PATH/.cargo/config.toml آغاز میگردد.
گزینهها (OPTIONS)
گزینههای نصب (Install Options)
--vers version, --version version
--git url
--branch branch
--tag tag
--rev sha
--path path
--list
-n, --dry-run
-f, --force
--no-track
--bin name…
--bins
--example name…
--examples
--root dir
--registry registry
--index index
برای جزئیات بیشتر مستندات ویژگیها https://doc.rust-lang.org/cargo/reference/features.html#command-line-feature-options را ببینید.
-F features, --features features
--all-features
--no-default-features
گزینههای کامپایل (Compilation Options)
--target triple
مقادیر ممکن:
این گزینه میتواند با مقدار پیکربندی build.target در config value https://doc.rust-lang.org/cargo/reference/config.html نیز مشخص شود.
توجه داشته باشید که مشخص کردن این پرچم باعث میشود Cargo در حالت متفاوتی اجرا شود که در آن مصنوعات مقصد در دایرکتوری جداگانهای قرار میگیرند. برای جزئیات بیشتر به مستندات build cache https://doc.rust-lang.org/cargo/reference/build-cache.html مراجعه کنید.
--target-dir directory
هنگام استفاده از --path، بهطور پیشفرض از دایرکتوری target در فضایکاری کریت محلی استفاده خواهد شد، مگر اینکه --target-dir مشخص شده باشد.
--debug
--profile name
--timings
در پایان ساخت، فایل cargo-timing.html در دایرکتوری target/cargo-timings نوشته خواهد شد. در صورتی که بخواهید یک اجرای قبلی را بررسی کنید، گزارش دیگری با برچسب زمان در نام فایل آن نیز نوشته میشود. این گزارشها تنها برای خواندن توسط انسان مناسب هستند و دادههای زمانبندی ماشینخوان ارائه نمیدهند.
--ignore-rust-version
--locked
این گزینه ممکن است در محیطهایی که ساختهای قطعی و تکرارپذیر (deterministic) مورد نیاز است، مانند خطوط لولهٔ CI، استفاده شود.
--offline
توجه داشته باشید که این ممکن است به حل وابستگی متفاوتی نسبت به حالت برخط منجر شود. Cargo خود را به crateهایی که بهصورت محلی بارگیری شدهاند محدود میکند، حتی اگر طبق نسخهٔ محلی نمایه (index)، نسخهٔ جدیدتری وجود داشته باشد. برای بارگیری وابستگیها پیش از آفلاین شدن، دستور cargo-fetch(1) را ببینید.
همچنین میتواند با مقدار پیکربندی net.offline در https://doc.rust-lang.org/cargo/reference/config.html مشخص شود.
--frozen
گزینههای متفرقه (Miscellaneous Options)
-j N, --jobs N
--keep-going
برای مثال اگر بستهٔ کنونی به وابستگیهای fails و works وابسته باشد که ساخت یکی از آنها شکست میخورد، cargo install -j1 ممکن است موردی را که ساختش موفقیتآمیز است بسازد یا نسازد (بسته به اینکه Cargo ابتدا اجرای کدام ساخت را انتخاب کرده باشد)، در حالی که cargo install -j1 --keep-going قطعاً هر دو ساخت را اجرا خواهد کرد، حتی اگر موردی که اول اجرا شده شکست بخورد.
گزینههای نمایش (Display Options)
-v, --verbose
-q, --quiet
--color when
همچنین میتواند با مقدار پیکربندی term.color در https://doc.rust-lang.org/cargo/reference/config.html مشخص شود.
--message-format fmt
+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 install ripgrep
cargo install --path .
cargo install --list