8.4.1. nix-channel
نام
nix-channel - مدیریت کانالهای نیکس (Nix channels)
خلاصهدستور
nix-channel {--add url [name] | --remove name | --list | --update [names…] | --list-generations | --rollback [generation] }
توصیف
کانالها مکانیزمی برای ارجاع به عبارتهای Nix راه دور و بازیابی راحت آخرین نسخه آنها هستند.
اجزای متحرک کانالها عبارتند از:
- کانالهای رسمی فهرستشده در <https://channels.nixos.org>
- فهرست مختص کاربر از کانالهای مشترکشده
- محتویات دانلودشده کانال
- مسیر جستجوی عبارت Nix، تنظیمشده با گزینه
-Iیا متغیر محیطیNIX_PATH
توجه
وضعیت یک کانال مشترکشده خارج از عبارتهای Nixی است که به آن وابستهاند. این موضوع ممکن است بازتولیدپذیری را محدود کند.
وابستگی به سایر عبارتهای Nix را میتوان به طور صریح با موارد زیر اعلام کرد:
fetchurl،fetchTarball، یاfetchGitدر عبارتهای Nix- گزینه
-Iدر فراخوانیهای خط فرمان
این دستور دارای عملیات زیر است:
--addurl [name]یک کانال با نام name واقع در url را به فهرست کانالهای مشترکشده اضافه میکند. اگر name حذف شود، به طور پیشفرض آخرین جزء url در نظر گرفته میشود، در حالی که پسوندهای
-stableیا-unstableاز آن حذف شدهاند.توجه
دستور
--addبه طور خودکار بهروزرسانی را انجام نمیدهد. از--updateبه طور صریح استفاده کنید.یک URL کانال باید به پوشهای حاوی فایل
nixexprs.tar.gzاشاره کند. در بالاترین سطح، آن فایل تاربال (tarball) باید حاوی یک پوشه منفرد با یک فایلdefault.nixباشد که به عنوان نقطه ورود کانال عمل میکند.--removenameکانال name را از فهرست کانالهای مشترکشده حذف میکند.
--listنامها و URLهای تمام کانالهای مشترکشده را در خروجی استاندارد چاپ میکند.
--update[names…]عبارتهای Nix مربوط به کانالهای مشترکشده را دانلود کرده و یک نسل (generation) جدید ایجاد میکند. اگر هیچ کانالی مشخص نشده باشد، تمام کانالها و در غیر این صورت فقط موارد موجود در names را بهروزرسانی میکند.
توجه
محتویات دانلودشده کانال کش میشوند. برای تغییر مدت زمان اعتبار دانلودهای کششده، از
--tarball-ttlیا گزینه پیکربندیtarball-ttlاستفاده کنید.--list-generationsفهرستی از تمام نسلهای موجود فعلی برای پروفایل کانال را چاپ میکند.
به همان شیوه کار میکند که
nix-env --profile /nix/var/nix/profiles/per-user/$USER/channels --list-generations --rollback[نسخه]بازگردانی کانالها به وضعیتی که قبل از آخرین فراخوانی
nix-channel --updateداشتند. بهعنوان یک گزینه اختیاری، میتوانید شماره نسخه (generation) خاصی از کانال را برای بازیابی مشخص کنید.
فایلها
دستور nix-channel روی فایلهای زیر عمل میکند.
مثالها
اشتراک در کانال Nixpkgs و اجرای hello از بسته GNU Hello:
$ nix-channel --add https://channels.nixos.org/nixpkgs-unstable
$ nix-channel --list
nixpkgs https://channels.nixos.org/nixpkgs
$ nix-channel --update
$ nix-shell -p hello --run hello
hello بازگردانی (rollback) بهروزرسانیهای کانال با استفاده از --rollback:
$ nix-instantiate --eval '<nixpkgs>' --attr lib.version
"22.11pre296212.530a53dcbc9"
$ nix-channel --rollback
switching from generation 483 to 482
$ nix-instantiate --eval '<nixpkgs>' --attr lib.version
"22.11pre281526.d0419badfad" حذف یک کانال (channel):
$ nix-channel --remove nixpkgs
$ nix-channel --list