فا نیکسی

12. واژه‌نامه

  • []

    نماد مجموعه خالی. در زمینه تاریخچه پروفایل، این نشان می‌دهد که یک بسته در نسخه خاصی از پروفایل حضور ندارد.

  • [ε]

    نماد اپسیلون. در زمینه یک بسته، این به معنای خالی بودن نسخه است. به‌ویژه، این derivation فاقد صفت نسخه است.

  • [دایرکتوری پایه (base directory)]

    مکان و مسیری که مسیرهای نسبی بر اساس آن حل می‌شوند.

    • برای عبارت‌ها در یک فایل، دایرکتوری پایه، پوشه‌ای است که آن فایل را در خود جای داده است. این مشابه دایرکتوری یک URL پایه است.
  • برای عبارت‌های نوشته‌شده در آرگومان‌های خط فرمان با استفاده از --expr، دایرکتوری پایه، دایرکتوری کاری فعلی است.

  • [کَش باینری (binary cache)]

    یک کَش باینری انبار Nixی است که از قالب متفاوتی استفاده می‌کند: فراداده (metadata) و امضاهای آن به جای [پایگاه‌داده Nix] در فایل‌های .narinfo نگهداری می‌شوند. این قالب متفاوت، سرویس‌دهی اشیاء انبار را از طریق شبکه ساده‌تر می‌کند، اما نمی‌تواند میزبان ساخت‌ها باشد. نمونه‌هایی از کش‌های باینری شامل باکت‌های S3 و کَش باینری NixOS می‌شوند.

  • [سیستم ساخت (build system)]

    اصطلاحی عمومی برای نرم‌افزاری که با خودکارسازی فراخوانی کامپایلرها، لینکرها و سایر ابزارها، ساخت نرم‌افزار را تسهیل می‌کند.

    Nix می‌تواند به عنوان یک سیستم ساخت عمومی استفاده شود. این ابزار هیچ شناختی از هیچ زبان برنامه‌نویسی یا زنجیره ابزار خاصی ندارد. این جزئیات در عبارت‌های derivation مشخص می‌شوند.

  • [بسته (closure)]

    بسته یک مسیر انبار، مجموعه ای از مسیرهای انبار است که مستقیماً یا غیرمستقیم از آن مسیر انبار «قابل دسترسی» هستند؛ یعنی بستهٔ آن مسیر تحت رابطهٔ ارجاعات است. برای یک بسته، بستهٔ derivation آن معادل وابستگی‌های زمان ساخت است، در حالی که بستهٔ مسیر خروجی آن معادل وابستگی‌های زمان اجرای آن است. برای استقرار صحیح، لازم است کل بسته‌ها مستقر شوند، در غیر این صورت ممکن است در زمان اجرا فایل‌ها گم شوند. دستور nix-store --query --requisites بسته‌های مسیرهای انبار را چاپ می‌کند.

    به عنوان مثال، اگر [شیء انبار] در مسیر P شامل یک [ارجاع] به یک شیء انبار در مسیر Q باشد، آنگاه Q در بستهٔ P قرار دارد. علاوه بر این، اگر Q به R ارجاع دهد، آنگاه R نیز در بستهٔ P قرار دارد.

    برای جزئیات بیشتر به ارجاعات مراجعه کنید.

  • [آدرس محتوا (content address)]

    یک آدرس محتوا، روشی امن برای ارجاع به داده‌های تغییرناپذیر است. این ارجاع مستقیماً از محتوای داده‌هایی که به آن‌ها ارجاع داده می‌شود محاسبه می‌شود، به این معنی که ارجاع ضد دستکاری است — تغییرات داده‌ها همیشه باید به آدرس‌های محتوای متمایز منتهی شوند.

برای اطلاع از نحوه استفادهٔ Nix از آدرس‌دهی محتوا (content-addressing)، به موارد زیر مراجعه کنید:

برای جزئیات بیشتر، به مسیر derivation مراجعه کنید.

نباید با مسیر derivation اشتباه گرفته شود.

  • [گراف جهت‌دار بدون دور]

    یک گراف جهت‌دار بدون دور (DAG) گرافی است که یال‌های آن دارای جهت هستند («a به b» با یال «b به a» یکی نیست) و هیچ مسیر ممکنی (که از به هم پیوستن یال‌ها ایجاد شود) یک چرخه تشکیل نمی‌دهد.

    گراف‌های DAG برای Nix بسیار مهم هستند. به‌ویژه، خودارجاعی‌های غیر-شیء انبار یک چرخه تشکیل می‌دهند.

  • [ویژگی آزمایشی]

    قابلیتی که هنوز تثبیت نشده است و توسط پرچم‌های ویژگی‌های آزمایشی نام‌گذاری‌شده محافظت می‌شود. این پرچم‌ها با تنظیم experimental-features فعال یا غیرفعال می‌شوند.

    راهنمای مشارکت در خصوص هدف و چرخه عمر ویژگی‌های آزمایشی را مطالعه کنید.

  • [شیء سیستم‌فایل]

    مدل داده‌ی Nix برای نمایش داده‌های ساده‌شده‌ی سیستم‌فایل.

    برای جزئیات بیشتر، به شیء سیستم‌فایل مراجعه کنید.

  • [derivation خروجی‌ثابت] (FOD)

    یک store derivation که در آن هش رمزنگاری‌شده‌ی خروجی از پیش با استفاده از صفت outputHash تعیین می‌شود، و در آن فایل اجرایی builder به شبکه دسترسی دارد.

  • [بسته / هرمتیک (Hermetic)]

    یک فرآیند ارزیابی یا ساخت زمانی هرمتیک است که بتوان مجموعه تمام ورودی‌های تأثیرگذار بر آن را به صورت مکانیکی شناسایی کرد. در سطح ساخت، این امر از طریق ایزوله‌سازی (sandboxing) حاصل می‌شود؛ و در سطح ارزیابی، با محدود کردن دسترسی ناخالص (همانند ارزیابی خالص) به همراه قفل‌گذاری یا سنجاق کردن ورودی‌های دریافت‌شده، که به صورت گذرا روی دریافت‌های خالص اعمال می‌شوند.

  • [IFD]

    درون‌ریزی از Derivation

  • [derivation ناخالص]

    یک ویژگی آزمایشی که به derivationها اجازه می‌دهد به صراحت به عنوان ناخالص علامت‌گذاری شوند، تا همیشه بازسازی شوند و خروجی‌های آن‌ها توسط فرایندهای بعدی برای تحقق‌بخشیدن (realise) مجدداً استفاده نشوند.

  • [شیء انبار آدرس‌دهی‌شده با ورودی]

    یک شیء انبار که با ساخت یک derivation غیر-مبتنی بر محتوا و غیر-خروجی‌ثابت تولید می‌شود.

    برای جزئیات بیشتر، به خروجی‌های derivation آدرس‌دهی‌شده با ورودی مراجعه کنید.

  • [قابل‌نصب]

    چیزی که می‌تواند در انبار Nix محقق (realise) شود.

    برای جزئیات بیشتر درباره دستورات nix (آزمایشی)، به قابل‌نصب‌ها مراجعه کنید.

  • [instantiate کردن (ساخت شیء derivation)]، instantiation

    ترجمه یک عبارت derivation به یک store derivation.

    به nix-instantiate مراجعه کنید که یک store derivation از یک عبارت Nix که به یک derivation ارزیابی می‌شود، تولید می‌کند.

  • [قفل‌گذاری (Locking)]

در مدیریت بسته، ثابت‌سازی نسخه (Pinning) مفهوم یا فرآیندی است که طی آن یک فایل قفل ایجاد می‌شود. این فایل هر ورودی ارزیابی تغییرپذیری را به یک مرجع تغییرناپذیر نگاشت می‌کند، به طوری که ارزیابی‌های آینده به جای اشاره به آنچه مراجع تغییرپذیر در حال حاضر نشان می‌دهند، به همان نسخه‌های تغییرناپذیر منتهی شوند.

  • [بایگانی نیکس (NAR)]

    یک بایگانی نیکس (Nix ARchive). این یک سریال‌سازی از یک مسیر در انبار نیکس است. این بایگانی می‌تواند شامل فایل‌های معمولی، پوشه‌ها و پیوندهای نمادین باشد. بایگانی‌های NAR با استفاده از nix-store --dump و nix-store --restore تولید و استخراج می‌شوند.

    برای جزئیات بیشتر به بایگانی نیکس مراجعه کنید.

  • پایگاه‌داده نیکس

    یک پایگاه‌داده SQLite برای ردیابی [مرجع]ها بین [شیء انبار]ها. این یک جزئیات پیاده‌سازی از [انبار محلی] است.

    مکان پیش‌فرض: /nix/var/nix/db.

  • [عبارت نیکس (Nix expression)]

    یک استفاده از [زبان نیکس] که از نظر نحوی معتبر است.

    مثال

    محتویات یک فایل .nix یک عبارت نیکس را تشکیل می‌دهند.

    عبارت‌های نیکس، [عبارت‌های درایویشن][derivation expression] را مشخص می‌کنند که در انبار نیکس به عنوان درایویشن‌های انبار مؤسس می‌شوند. سپس این درایویشن‌ها می‌توانند برای تولید [خروجی‌ها][output] محقق شوند.

    مثال

    ساخت و استقرار نرم‌افزار با استفاده از نیکس مستلزم نوشتن عبارت‌های نیکس برای توصیف [بسته‌ها][package] و ترکیب‌های آن‌ها است.

  • [نمونه نیکس (Nix instance)]

    1. یک نصب از نیکس، که شامل حضور یک [انبار] و مدیر بسته نیکس است که روی آن انبار کار می‌کند. یک نصب محلی نیکس و یک سازنده راه دور دو نمونه از نمونه‌های نیکس هستند.
    2. یک فرآیند در حال اجرای نیکس، مانند دستور nix.
  • [خروجی (output)]

    یک [شیء انبار] که توسط یک [درایویشن انبار] تولید می‌شود. برای جزئیات بیشتر به آرگومان outputs برای تابع derivation مراجعه کنید.

  • [بسته خروجی (output closure)]\ [بسته (closure)] یک مسیر خروجی. این بسته فقط شامل مواردی است که از خروجی [قابل‌دستیابی] هستند.

  • [مسیر خروجی (output path)]

    [مسیر انبار] به خروجی یک [درایویشن انبار].

  • [بسته (package)]

    یک بسته نرم‌افزاری؛ فایل‌هایی که برای یک هدف خاص به هم تعلق دارند، به همراه فراداده (metadata).

    نیکس فایل‌ها را به عنوان شیء سیستم‌فایل نمایش می‌دهد و نحوه تعلق آن‌ها به یکدیگر به عنوان [مرجع]ها بین [شیء انبار]هایی که حاوی این اشیاء سیستم‌فایل هستند، کدگذاری می‌شود.

    [زبان نیکس] امکان نام‌گذاری بسته‌ها را بر حسب مجموعه‌های صفت شامل موارد زیر فراهم می‌کند:

    • صفاتی که به فایل‌های یک بسته اشاره دارند، معمولاً در قالب خروجی‌های درایویشن،
    • صفاتی با فراداده، مانند اطلاعاتی درباره نحوه استفاده از بسته.

    شکل دقیق این مجموعه‌های صفت بستگی به توافق دارد.

  • [ثابت‌سازی نسخه (Pinning)]

مانند قفل کردن، اما یک پین تنها یک ورودی را قفل می‌کند. یک راهکار پین‌کردن ممکن است مجموعه‌ای از پین‌ها را مدیریت کند، اما هدف از پایین به بالا (bottom-up) را برای تثبیت مرجع یک ورودی بر اساس تقاضا برآورده می‌کند، در حالی که قفل کردن دلالت بر رویکردی از بالا به پایین دارد که در آن همه پین‌ها در یک مکان واحد «وادار» می‌شوند. این «وادارسازی» عموماً به واسطه مکانیسم‌های سطح بالایی مانند سیستم‌های ماژول زبان برنامه‌نویسی به دست می‌آید. نیکس چنین سیستم ماژول محدودکننده‌ای ندارد، زیرا حتی یک فلیک نیز می‌تواند از عبارت‌هایی استفاده کند که به تنهایی پین یا قفل می‌شوند. این امر متکی بر کامل بودن قفل نیست، بلکه بر یک ویژگی دریافت گذرا (transitive) متکی است؛ نگاه کنید به هرمسیت.

  • [پروفایل]

    یک پیوند نمادین به محیط کاربر فعلی یک کاربر، برای نمونه: /nix/var/nix/profiles/default.

  • [خلوص]<a id="gloss-خلوص"></a>

    این فرض که درایویشن‌های مساوی نیکس هنگام اجرا همواره خروجی یکسانی تولید می‌کنند. این موضوع را به‌طور کلی نمی‌توان تضمین کرد (برای نمونه، یک سازنده می‌تواند به ورودی‌های خارجی مانند شبکه یا زمان سیستم متکی باشد) اما مدل نیکس آن را فرض می‌گیرد.

  • [قابل‌دسترس]

    یک مسیر انبار Q از مسیر انبار دیگری چون P قابل‌دسترس است اگر Q در بستار رابطهٔ ارجاعات باشد.

    برای جزئیات به ارجاعات مراجعه کنید.

  • [محقق‌سازی (realise)]، تحقق

    اطمینان از اینکه یک [مسیر انبار][معتبر]validity است.

    این کار از راه‌های زیر قابل دستیابی است:

    • دریافت یک [شیء انبار] پیش‌ساخته از یک [جایگزین‌ساز]
    • ساختن derivation متناظر با آن
    • تفویض به یک ماشین راه دور و بازیابی خروجی‌ها

    برای توضیحات دقیق درباره الگوریتم، به nix-store --realise مراجعه کنید.

    همچنین نگاه کنید به nix-build و nix build (آزمایشی).

  • [ارجاع (reference)]

    یک یال از یک [شیء انبار] به شیء دیگر.

    برای جزئیات به ارجاعات مراجعه کنید.

    برای جزئیات به ارجاعات مراجعه کنید.

  • [ارجاع‌دهنده]

    یک یال معکوس از یک [شیء انبار] به شیء دیگر.

  • [ملزومات (requisite)]

    یک شیء انبار که از یک [شیء انبار] داده‌شده توسط یک مسیر (زنجیره‌ای از ارجاعات) [قابل‌دسترس] است. [بستار] مجموعهٔ ملزومات است.

    برای جزئیات به ارجاعات مراجعه کنید.

  • [انبار (store)]

    مجموعه‌ای از اشیاء انبار، به همراه عملکردهایی برای دستکاری آن مجموعه. برای جزئیات به انبار نیکس مراجعه کنید.

    انواع زیادی از انبارها وجود دارد، برای جزئیات به انواع انبار مراجعه کنید.

  • store derivation

    یک derivation که به عنوان یک [شیء انبار] نمایش داده می‌شود.

    برای جزئیات به Store Derivation مراجعه کنید.

  • [شیء انبار (store object)]

    بخشی از محتوای یک [انبار].

    یک شیء انبار شامل یک [شیء سیستم‌فایل]، ارجاعات به سایر اشیاء انبار، و سایر فراداده‌ها است. می‌توان توسط یک [مسیر انبار] به آن ارجاع داد.

    برای جزئیات به شیء انبار مراجعه کنید.

  • [مسیر انبار]

مکان یک store object در سیستم‌فایل، یعنی یک فرزند مستقیم از پوشه‌ی انبار Nix.

مثال

/nix/store/jf6gn2dzna4nmsfbdxsd7kwhsk6gnnlr-git-2.38.1

برای جزئیات بیشتر به Store Path مراجعه کنید.

  • [string interpolation]

    گسترش دادن عبارت‌های محصور شده در ${'{'} {'}'} درون یک string، path یا attribute name.

    برای جزئیات بیشتر به String interpolation مراجعه کنید.

  • SRI

    Subresource Integrity (SRI) یک مشخصه W3C برای فراداده‌های یکپارچگی است. Nix از فرمت هش SRI (<algorithm>-<Base64 hash>) استفاده می‌کند تا هش‌های محتوا را به شکلی خودتوصیف مشخص کند، زیرا الگوریتم هش بخشی از این فرمت است.

  • [substitute]

    یک substitute (جایگزین) یک فراخوانی فرمان ذخیره‌شده در [Nix database] است که نحوه ساخت یک store object را توصیف می‌کند و مکانیزم ساخت عادی (یعنی derivationها) را دور می‌زند. معمولاً substitute با بارگیری یک نسخه پیش‌ساخته از store object از یک سرور، آن را می‌سازد.

  • substituter

    یک store اضافی که Nix می‌تواند به جای ساختن store objectها، آن‌ها را از آن دریافت کند. اغلب substituter یک binary cache است، اما هر انبار دیگری نیز می‌تواند به عنوان substituter عمل کند.

    برای جزئیات بیشتر به substituters configuration option مراجعه کنید.

  • [user environment]

    یک store object خودکار ساخته‌شده که شامل مجموعه‌ای از پیوندهای نمادین (symlinks) به برنامه‌های «فعال»، یعنی سایر مسیرهای انبار (store paths) است. این موارد به طور خودکار توسط nix-env تولید می‌شوند. به profiles مراجعه کنید.

  • validity

    یک مسیر انبار (store path) در صورتی معتبر است که تمام store objectهای موجود در [closure] آن قابل خواندن از store باشند.

    برای یک local store، این به معنای موارد زیر است:

    • مسیر انبار به یک store object موجود در آن store منتهی شود.
    • مسیر انبار در [Nix database] به عنوان معتبر فهرست شده باشد.
    • تمام مسیرهای موجود در [closure] مسیر انبار معتبر باشند.

nix.dev/manual/nix/stable/glossary.html

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