8.3.4. nix-env
نام
nix-env - دستکاری یا پرسوجو از پروفایلهای کاربری Nix
خلاصه
nix-env operation [options][*arguments…*]
[--option name value][`--arg` *name* *value*]
[--argstr name value][{`--file` | `-f`} *path*]
[{--profile | -p} path][`--system-filter` *system*]
[--dry-run]
توضیحات
دستور nix-env برای دستکاری پروفایلهای کاربری Nix استفاده میشود. پروفایلهای کاربری مجموعهای از بستههای نرمافزاری هستند که در هر برهه زمانی برای یک کاربر در دسترس هستند. به عبارت دیگر، آنها نمای ترکیبی و یکپارچهای از برنامههای موجود در انبار Nix را ارائه میدهند. ممکن است تعداد زیادی پروفایل کاربری وجود داشته باشد: کاربران مختلف میتوانند پروفایلهای متفاوتی داشته باشند، و هر کاربر بهتنهایی میتواند بین پروفایلهای گوناگون جابهجا شود.
دستور nix-env دقیقا یک پرچم operation دریافت میکند که نشاندهنده زیردستوری است که باید اجرا شود. عملیات زیر در دسترس هستند:
--install--upgrade--uninstall--set--set-flag--query--switch-profile--list-generations--delete-generations--switch-generation--rollback
این صفحات را میتوان به صورت آفلاین مشاهده کرد:
man nix-env-<operation>.مثال:
man nix-env-installnix-env --help --<operation>مثال:
nix-env --help --install
منابع بسته
ابزار nix-env میتواند بستهها را از چندین منبع دریافت کند:
- یک مجموعه ویژگی از derivationها از طریق:
- عبارت پیشفرض Nix (به صورت پیشفرض)
- یک فایل Nix، مشخصشده از طریق
--file - یک پروفایل، مشخصشده از طریق
--from-profile - یک عبارت Nix که تابعی است و عبارت پیشفرض را به عنوان آرگومان میپذیرد، مشخصشده از طریق
--from-expression
- یک مسیر انبار
انتخابگرها
چندین عملیات، مانند nix-env --query و nix-env --install، فهرستی از آرگومانها را دریافت میکنند که بستههای مورد نظر برای انجام عملیات را مشخص میکنند.
بستهها بر اساس بخش name و بخش version یک نام نمادین derivation شناسایی میشوند:
name: هر چیزی تا قبل از اولین خط فاصله (-) که پس از آن یک حرف قرار نداشته باشد.version: مابقی بخشها، به استثنای خط فاصله جداکننده.
مثال
ابزار
nix-envنام نمادین derivation یعنیapache-httpd-2.0.48را به صورت زیر تجزیه میکند:{ "name": "apache-httpd", "version": "2.0.48" }
مثال
ابزار
nix-envنام درایویشن نمادینfirefox.*را به شکل زیر تجزیه میکند:{ "name": "firefox.*", "version": "" }
بخشهای name از آرگومانها به nix-env به عنوان عبارتهای باقاعده (regular expressions) توسعهیافته در نظر گرفته میشوند و با بخشهای name از نامهای derivation در کد منبع بسته مطابقت داده میشوند.
این تطابق به کوچک و بزرگ بودن حروف حساس است (case-sensitive).
عبارت باقاعده میتواند اختیاری با یک خط تیره (-) و یک شماره نسخه دنبال شود؛ اگر حذف شود، هر نسخهای از بسته مطابقت خواهد داشت.
برای جزئیات بیشتر در مورد عبارتهای باقاعده، به regex(7) مراجعه کنید.
مثال
الگوهای رایج برای یافتن نام بستهها با
nix-env:
firefoxبا نام بسته
firefoxو هر نسخهای مطابقت دارد.
firefox-32.0با نام بسته
firefoxو نسخه32.0مطابقت دارد.
gtk\\+با نام بسته
gtk+مطابقت دارد. کاراکتر+باید با استفاده از یک بک اسلش (\) فراردهی (escape) شود تا از تفسیر آن به عنوان یک کمیتسنج جلوگیری شود، و خود بک اسلش نیز به نوبه خود باید با یک بک اسلش دیگر فراردهی شود تا اطمینان حاصل شود که شل آن را منتقل میکند.
.\*با هر نام بستهای مطابقت دارد. این حالت پیشفرض برای بیشتر دستورها است.
'.*zip.*'با هر نام بستهای که شامل رشته
zipباشد مطابقت دارد. به نقاط توجه کنید:'*zip*'کار نمیکند، زیرا در یک عبارت باقاعده، کاراکتر*به عنوان یک کمیتسنج تفسیر میشود.
'.*(firefox|chromium).*'با هر نام بستهای که حاوی رشتههای
firefoxیاchromiumباشد مطابقت دارد.
فایلها
nix-env روی فایلهای زیر کار میکند.