فا نیکسی

8.4.3. nix-copy-closure

نام

nix-copy-closure - کپی کردن شیءهای انبار به یا از یک ماشین راه دور از طریق SSH

خلاصه

nix-copy-closure [--to | --from ][`--gzip`] [--include-outputs][`--use-substitutes` | `-s`] [-v][_user_@]machine[:port] paths

توضیحات

با داشتن paths از یک ماشین، nix-copy-closure closure آن مسیرها (یعنی تمام وابستگی‌های آن‌ها در انبار Nix) را محاسبه کرده و store objects موجود در آن closure را از طریق SSH به ماشینی دیگر کپی می‌کند. این ابزار شیءهای انباری را که در حال حاضر روی ماشین دیگر موجود هستند، کپی نمی‌کند.

نکته

در حالی که انبار Nix مورد استفاده روی ماشین محلی را می‌توان در خط فرمان با گزینه --store مشخص کرد، انبار Nix قابل دسترس روی ماشین راه دور تنها می‌تواند روی همان ماشین راه دور پیکربندی استاتیک شود.

از آنجا که nix-copy-closure تابع ssh را فراخوانی می‌کند، ممکن است لازم باشد با ماشین راه دور احراز هویت کنید. در واقع، ممکن است از شما دو بار درخواست احراز هویت شود؛ زیرا nix-copy-closure در حال حاضر دو بار به ماشین راه دور متصل می‌شود: بار اول برای دریافت مجموعه مسیرهای گمشده روی ماشین مقصد، و بار دوم برای ارسال دامپ آن مسیرها. هنگام استفاده از احراز هویت کلید عمومی، می‌توانید با استفاده از ssh-agent از تایپ کردن عبارت عبور جلوگیری کنید.

گزینه‌ها

  • --to

    کپی کردن closure مربوط به paths از یک انبار Nix قابل دسترس از ماشین محلی به انبار Nix روی machine راه دور. این رفتار پیش‌فرض است.

  • --from

    کپی کردن closure مربوط به paths از انبار Nix روی machine راه دور به انبار Nix مشخص‌شده‌ی ماشین محلی.

  • --gzip

    فعال‌سازی فشرده‌سازی اتصال SSH.

  • --include-outputs

    همچنین کپی کردن خروجی‌های store derivationهایی که در closure گنجانده شده‌اند.

  • --use-substitutes / -s

    تلاش برای بارگیری شیءهای انبار مفقود روی مقصد از substituters. هر شیء انباری که نتواند روی مقصد جایگزین شود، همچنان به طور معمولی از مبدأ کپی می‌شود. این کار برای مثال زمانی مفید است که اتصال بین ماشین مبدأ و مقصد کند است، اما اتصال بین ماشین مقصد و cache.nixos.org (سرور کش باینری پیش‌فرض) سریع است.

متغیرهای محیطی

  • NIX_SSHOPTS

    گزینه‌های اضافی که باید در خط فرمان به ssh پاس داده شوند.

مثال‌ها

مثال

کپی کردن GNU Hello به همراه تمام وابستگی‌های آن به یک ماشین راه دور:

$ storePath="$(nix-build '<nixpkgs>' -I nixpkgs=channel:nixpkgs-unstable -A hello --no-out-link)"
$ nix-copy-closure --to [email protected] "$storePath"
copying 5 paths...
copying path '/nix/store/h6q8sqsqfbd3252f9gixqn3z282wds7m-xgcc-13.2.0-libgcc' to 'ssh://[email protected]'...
copying path '/nix/store/imnwvn96lw355giswsk36hx105j4wnpj-libunistring-1.1' to 'ssh://[email protected]'...
copying path '/nix/store/85301indj7scg34spnfczkz72jgv8wa9-libidn2-2.3.7' to 'ssh://[email protected]'...
copying path '/nix/store/ypwfsaljwhzw9iffiysxmxnhjj8v7np0-glibc-2.39-31' to 'ssh://[email protected]'...
copying path '/nix/store/0dklv59zppdsqdvgf0qdvjgzcs5wbwxa-hello-2.12.1' to 'ssh://[email protected]'...

مثال

کپی کردن GNU Hello از یک ماشین راه دور با استفاده از یک مسیر انبار شناخته‌شده و اجرای آن:

$ storePath="$(nix-instantiate --eval --raw '<nixpkgs>' -I nixpkgs=channel:nixpkgs-unstable -A hello.outPath)"
$ nix-copy-closure --from [email protected] "$storePath"
$ "$storePath"/bin/hello
Hello, world!

nix.dev/manual/nix/stable/command-ref/nix-copy-closure.html

نیکسی · یادداشت‌های فارسی Nix local fonts