فا نیکسی

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> / -j number

    حداکثر تعداد کارهای ساختی را که 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> / -A attrPath

    یک صفت را از عبارت سطح بالای 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-url

    URL مربوط به انبار 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 مراجعه کنید.

nix.dev/manual/nix/stable/command-ref/opt-common.html

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