8.1. گزینههای رایج
اکثر دستورهای Nix گزینههای خط فرمان زیر را میپذیرند:
<span id="opt-help">
--help</span>خلاصهای از نحو دستور را چاپ کرده و خارج میشود.
<span id="opt-version">
--version</span>شماره نسخه Nix را روی خروجی استاندارد چاپ کرده و خارج میشود.
<span id="opt-verbose">
--verbose</span> /-vسطح جزئیات پیامهای تشخیصی چاپشده روی خروجی خطای استاندارد را افزایش میدهد. برای هر عملیات Nix، اطلاعات چاپشده روی خروجی استاندارد خوشتعریف است؛ هرگونه اطلاعات تشخیصی روی خروجی خطای استاندارد چاپ میشود و هرگز روی خروجی استاندارد قرار نمیگیرد.
این گزینه را میتوان به دفعات مشخص کرد. در حال حاضر، سطوح جزئیات زیر وجود دارند:
0“فقط خطاها”فقط پیامهایی را چاپ میکند که توضیح میدهند چرا فراخوانی Nix با شکست مواجه شده است.
1“اطلاعرسانی”پیامهای مفیدی دربارهی کارهایی که Nix انجام میدهد چاپ میکند. این حالت پیشفرض است.
2“پرگو”پیامهای اطلاعرسانی بیشتری را چاپ میکند.
3“پرجوشوخروش”پیامهای اطلاعرسانی بسیار بیشتری را چاپ میکند.
4“دیباگ”اطلاعات اشکالزدایی را چاپ میکند.
5“انبوه”مقدار بسیار زیادی از اطلاعات اشکالزدایی را چاپ میکند.
<span id="opt-quiet">
--quiet</span>سطح جزئیات پیامهای تشخیصی چاپشده روی خروجی خطای استاندارد را کاهش میدهد. این گزینه معکوس گزینه
-v/--verboseاست.این گزینه را میتوان به دفعات مشخص کرد. به فهرست سطوح جزئیات قبلی مراجعه کنید.
<span id="opt-log-format">
--log-format</span> formatاز این گزینه میتوان برای تغییر فرمت خروجی گزارش (log) استفاده کرد، که در آن format یکی از موارد زیر است:
rawاین فرمت خام است، همانطور که توسط nix-build خروجی داده میشود.
internal-jsonگزارشها را به شکلی ساختاریافته خروجی میدهد.
هشدار
در حالی که خود طرحواره (schema) نسبتاً پایدار است، فرمت پیامهای خطا (بهویژه فیلد
msg) ممکن است بین نسخههای مختلف تغییر کند.barفقط یک نوار پیشرفت را در طول ساختها نمایش میدهد.
bar-with-logsگزارشهای خام را به همراه نوار پیشرفت در پایین صفحه نمایش میدهد.
<span id="opt-no-build-output">
--no-build-output</span> /-Qبه طور پیشفرض، خروجی نوشتهشده توسط سازندهها روی خروجی استاندارد و خطای استاندارد، در خروجی خطای استاندارد دستور Nix بازتاب مییابد. این گزینه این رفتار را متوقف میکند. توجه داشته باشید که خروجی استاندارد و خطای سازنده همیشه در یک فایل گزارش در
prefix/nix/var/log/nixنوشته میشوند.<span id="opt-max-jobs">
--max-jobs</span> /-jnumberحداکثر تعداد کارهای ساختی را که Nix به صورت موازی انجام خواهد داد روی مقدار مشخصشده تنظیم میکند. برای استفاده از تعداد پردازندههای موجود در سیستم،
autoرا مشخص کنید. مقدار پیشفرض توسط تنظیمات پیکربندیmax-jobsمشخص میشود که خود به طور پیشفرض روی1تنظیم شده است. مقدار بالاتر در سیستمهای SMP یا برای بهرهبرداری از تاخیر I/O مفید است.تنظیم آن روی
0ساختوساز روی ماشین محلی را ممنوع میکند، که وقتی میخواهید ساختها فقط روی سازندههای راه دور انجام شوند، مفید است.<span id="opt-cores">
--cores</span>
مقدار متغیر محیطی NIX_BUILD_CORES را در فراخوانی سازندهها تعیین میکند.
سازندهها میتوانند به صلاحدید خود از این متغیر برای کنترل حداکثر میزان موازیسازی استفاده کنند.
برای مثال، در Nixpkgs، اگر صفت enableParallelBuilding در derivation روی مقدار true تنظیم شده باشد، سازنده پرچم -jN را به GNU Make ارسال میکند.
مقدار پیشفرض آن، در صورت تنظیمشدن، مقدار تنظیمات پیکربندی cores است، وگرنه 1 خواهد بود.
مقدار 0 به این معناست که سازنده باید از تمام هستههای پردازنده موجود در سیستم استفاده کند.
<span id="opt-max-silent-time">
--max-silent-time</span>حداکثر تعداد ثانیههایی را تعیین میکند که سازنده میتواند بدون تولید هیچ دادهای روی خروجی استاندارد یا خطای استاندارد سپری کند. مقدار پیشفرض توسط تنظیمات پیکربندی
max-silent-timeمشخص میشود. مقدار0به معنای نداشتن محدودیت زمانی (time-out) است.<span id="opt-timeout">
--timeout</span>حداکثر تعداد ثانیههایی را که یک سازنده میتواند اجرا شود تعیین میکند. مقدار پیشفرض توسط تنظیمات پیکربندی
timeoutمشخص میشود. مقدار0به معنای عدم اعمال محدودیت زمانی است.<span id="opt-keep-going">
--keep-going</span> /-kتا حد امکان، در صورت شکست ساختها، به کار ادامه دهید. یعنی اگر ساخت ورودیِ یک derivation با شکست مواجه شود، Nix همچنان سایر ورودیها را میسازد، اما خودِ آن derivation را خیر. بدون این گزینه، اگر هر ساختی با شکست مواجه شود (بهجز ساخت جایگزینها)، Nix متوقف میشود و ممکن است ساختهای در جریان را (در صورت ساختهای موازی یا توزیعشده) متوقف کند.
<span id="opt-keep-failed">
--keep-failed</span> /-Kمشخص میکند که در صورت شکست ساخت، پوشه موقت (معمولاً در
/tmp) که ساخت در آن انجام میشود نباید حذف شود. مسیر پوشه ساخت به عنوان یک پیام اطلاعاتی چاپ میشود.<span id="opt-fallback">
--fallback</span>هر زمان که Nix تلاش میکند یک derivation را بسازد که برای هر مسیر خروجی آن جایگزینهایی شناخته شده است، اما تحقق مسیرهای خروجی از طریق جایگزینها با شکست مواجه شود، به ساخت derivation بازمیگردد (fallback).
رایجترین سناریویی که این گزینه در آن مفید است، زمانی است که ما جایگزینها را به منظور انجام استقرار باینری از طریق، فرض کنید، یک مخزن شبکهای ثبت کردهایم. اگر مخزن از دسترس خارج باشد، تحقق derivation با شکست مواجه خواهد شد. هنگامی که این گزینه مشخص شود، Nix به جای آن، derivation را میسازد. بنابراین، نصب از روی باینریها به نصب از روی کد منبع بازمیگردد. این گزینه بهطور پیشفرض فعال نیست، زیرا معمولاً مطلوب نیست که یک خطای موقت در دریافت جایگزینها منجر به ساخت کامل از روی کد منبع (همراه با مصرف منابع مرتبط با آن) شود.
<span id="opt-readonly-mode">
--readonly-mode</span>هنگامی که از این گزینه استفاده میشود، هیچ تلاشی برای باز کردن پایگاهداده Nix انجام نمیشود. بیشتر عملیاتهای Nix به دسترسی به پایگاهداده نیاز دارند، بنابراین آن عملیاتها با شکست مواجه خواهند شد.
<span id="opt-arg">
--arg</span> name valueاین گزینه توسط
nix-env،nix-instantiate،nix-shellوnix-buildپذیرفته میشود. هنگام ارزیابی عبارتهای Nix، ارزیاب عبارت بهطور خودکار تلاش میکند توابعی را که با آنها مواجه میشود فراخوانی کند. این ارزیاب میتواند بهطور خودکار توابعی را که هر آرگومان آنها دارای یک مقدار پیشفرض است (مانند{'{'} argName ? defaultValue {'}'}: ...) فراخوانی کند.
با استفاده از --arg، همچنین میتوانید توابعی را که دارای آرگومان بدون مقدار پیشفرض هستند (یا یک مقدار پیشفرض را بازنویسی کنند) فراخوانی کنید.
یعنی اگر ارزیاب با تابعی مواجه شود که آرگومان آن دارای نام name است، آن را با مقدار value فراخوانی خواهد کرد.
به عنوان مثال، default.nix سطح بالا در Nixpkgs در واقع یک تابع است:
{ # The system (e.g., `i686-linux') for which to build the packages.
system ? builtins.currentSystem
...
}: ... بنابراین اگر این عبارت Nix را فراخوانی کنید (مثلاً هنگامی که nix-env --install --attr pkgname را اجرا میکنید)، تابع بهطور خودکار با استفاده از مقدار builtins.currentSystem برای آرگومان system فراخوانی خواهد شد.
میتوانید با استفاده از --arg این مقدار را بازنویسی کنید، مثلاً: nix-env --install --attr pkgname --arg system \"i686-freebsd\".
(توجه داشته باشید از آنجا که آرگومان یک لیترال رشتهای Nix است، باید نقلقولها را escape کنید.)
<span id="opt-arg-from-file">
--arg-from-file</span> name pathمحتویات فایل path را به عنوان آرگومان name به توابع Nix ارسال میکند.
<span id="opt-arg-from-stdin">
--arg-from-stdin</span> nameمحتویات ورودی استاندارد (stdin) را به عنوان آرگومان name به توابع Nix ارسال میکند.
<span id="opt-argstr">
--argstr</span> name valueاین گزینه شبیه به
--argاست، با این تفاوت که مقدار آن یک عبارت Nix نیست بلکه یک رشته است. بنابراین بهجای--arg system \"i686-linux\"(نقلقولهای بیرونی برای سازگاری با شل هستند) میتوانید بگویید--argstr system i686-linux.<span id="opt-attr">
--attr</span> /-AattrPathیک صفت را از عبارت سطح بالای Nix که در حال ارزیابی است انتخاب میکند. (فقط مختص
nix-env،nix-instantiate،nix-buildوnix-shell.) مسیر صفت attrPath دنبالهای از نامهای صفت است که با نقطه از هم جدا شدهاند. به عنوان مثال، با فرض یک عبارت سطح بالای Nix به نام e، مسیر صفتxorg.xorgserverباعث میشود که عبارتe.xorg.xorgserverمورد استفاده قرار گیرد. برای چند نمونه عینی بهnix-env --installمراجعه کنید.علاوه بر نام صفتها، میتوانید اندیسهای آرایه را نیز مشخص کنید. به عنوان مثال، مسیر صفت
foo.3.barصفتbarاز چهارمین عنصر آرایه واقع در صفتfooاز عبارت سطح بالا را انتخاب میکند.<span id="opt-eval-store">
--eval-store</span> store-urlURL مربوط به انبار Nix جهت استفاده برای ارزیابی، یعنی جایی که درایویشنها (فایلهای
.drv) و ورودیهای ارجاعدادهشده توسط آنها در آن ذخیره میشوند.<span id="opt-expr">
--expr</span> /-Eآرگومانهای خط فرمان را به عنوان فهرستی از عبارتهای Nix برای تجزیه و ارزیابی تفسیر میکند، نه به عنوان فهرستی از نام فایلهای حاوی عبارتهای Nix. (فقط مختص
nix-instantiate،nix-buildوnix-shell.)برای
nix-shell، این گزینه معمولاً برای ارائه یک شل استفاده میشود که در آن میتوانید بستههای بازگرداندهشده توسط عبارت را بسازید. اگر میخواهید شلی داشته باشید که حاوی بستههای ساختهشده و آماده برای استفاده باشد، بهجای آن عبارت خود را به پرچم کمکیnix-shell --packagesبدهید.<span id="opt-I">
-I/--include</span> pathیک ورودی به فهرست مسیرهای جستجوی مورد استفاده برای حل مسیرهای جستجو اضافه میکند. این گزینه ممکن است چندین بار داده شود.
مسیرهای اضافهشده از طریق
-Iبر تنظیمات پیکربندیnix-pathو متغیر محیطیNIX_PATHاولویت دارند.<span id="opt-impure">
--impure</span>امکان دسترسی به مسیرها و مخازن تغییرپذیر را فراهم میکند.
<span id="opt-option">
--option</span> name valueگزینه پیکربندی Nix به نام name را روی مقدار value تنظیم میکند. این کار تنظیمات موجود در فایل پیکربندی Nix را بازنویسی میکند (به nix.conf5 مراجعه کنید).
<span id="opt-repair">
--repair</span>
مسیرهای خراب یا مفقود شدهی انبار Nix را با بارگیری مجدد یا ساخت دوبارهی آنها اصلاح کنید.
توجه داشته باشید که این کار کند است، زیرا مستلزم محاسبهی یک هش رمزنگاریشده از محتویات هر مسیر در وابستگیهای زمان اجرا (closure) مربوط به ساخت است.
همچنین به هشدار موجود در بخش nix-store --repair-path توجه کنید.
نکته
برای بازنشانی تنظیمات پیکربندی با استفاده از پرچمهای خط فرمان، به
man nix.confمراجعه کنید.