سؤالات متداول
ریشه نام Nix چیست؟
نام Nix از واژه هلندی niks به معنای هیچ گرفته شده است؛ اقدامات ساخت هیچچیز را که بهطور صریح به عنوان ورودی اعلام نشده باشد، نمیبینند.
— Nix: A Safe and Policy-Free System for Software Deployment, LISA XVIII, 2004
لوگوی Nix از ایدهای برای لوگوی Haskell و این حقیقت که nix در زبان لاتین به معنای برف است الهام گرفته شده است.
فلیکها (Flakes) چیستند؟
به flakes-definition مراجعه کنید.
از کدام شاخه کانال باید استفاده کنم؟
مجموعهی بستههای نیکس (Nixpkgs) و NixOS دارای نسخههای پایدار و غلتان (rolling) هستند.
این نسخهها در گونههایی به نام «شاخههای کانال» توزیع میشوند: شاخههای Git که برای انتشارها استفاده میشوند و همچنین به کانالهای Nix تبدیل میشوند.
راهنمایی
برای اطلاعات بیشتر درباره کانالها به ورودی
nix-channelدر راهنمای Nix و برای استراتژی انشعابگیری Nixpkgs به راهنمای مشارکت در Nixpkgs مراجعه کنید.
پایدار
نسخههای پایدار بهمنظور رفع باگها یا آسیبپذیریهای امنیتی بهروزرسانیهای محافظهکارانهای دریافت میکنند؛ در غیر این صورت نسخههای بسته تغییر نمیکنند. یک نسخه پایدار جدید هر شش ماه یکبار عرضه میشود.
در لینوکس (از جمله NixOS و WSL)، از
nixos-*استفاده کنید.این شاخهها به کامیتهایی اشاره میکنند که در آنها بیشتر بستههای لینوکس پیشساخته شدهاند و میتوان آنها را از کش باینری دریافت کرد. علاوه بر این، این کامیتها مجموعه تست کامل NixOS را با موفقیت پشت سر گذاشتهاند.
در macOS/Darwin، از
nixpkgs-*-darwinاستفاده کنید.این شاخهها به کامیتهایی اشاره میکنند که در آنها بیشتر بستههای Darwin پیشساخته شدهاند و میتوان آنها را از کش باینری دریافت کرد.
در هر پلتفرم دیگری، استفاده از هر یک از موارد فوق تفاوتی ایجاد نمیکند.
Hydra هیچ باینریای را برای پلتفرمهای دیگر پیشساخته نمیکند.
تمام این «شاخههای کانال» از شاخه مربوط به release-* پیروی میکنند.
مثال
nixos-23.05وnixpkgs-23.05-darwinهر دو بر اساسrelease-23.05ساخته شدهاند.
غلتان (Rolling)
نسخههای غلتان از master، شاخه اصلی توسعه، پیروی میکنند.
- در لینوکس (از جمله NixOS و WSL)، از
nixos-unstableاستفاده کنید. - در هر پلتفرم دیگری، از
nixpkgs-unstableاستفاده کنید.
شاخههای کانال *-small مجموعهتست کوچکتری را پشت سر گذاشتهاند، به این معنا که نسبت به شاخهی پایه خود بهروزتر هستند، اما تضمینهای پایداری کمتری ارائه میدهند.
آیا ناخالصیای در ساختهای ایزوله شده (Sandboxed) باقی مانده است؟
بله. موارد زیر وجود دارند:
- معماری CPU: تلاش زیادی میشود تا از کامپایل دستورات بومی به نفع دستورات پشتیبانیشدهٔ ازپیشتعیینشده جلوگیری شود.
- زمان/تاریخ فعلی سیستم.
- سیستمفایل مورد استفاده برای ساخت (نیز ببینید:
TMPDIR). - پارامترهای هسته لینوکس، از جمله:
- قابلیتهای IPv6.
- مفسرهای binfmt، برای مثال آنهایی که با
boot.binfmt.emulatedSystemsپیکربندی شدهاند.
- رفتار زمانی سیستم ساخت، یک ساخت موازی Make ممکن است در برخی موارد ورودیهای درستی دریافت نکند.
- درج مقادیر تصادفی، برای مثال از
/dev/randomیا/dev/urandom. - تفاوتهای بین نسخههای Nix. برای نمونه، یک نسخه جدید Nix ممکن است یک متغیر محیطی جدید معرفی کند. Nix تضمین نمیکند که دستوری مانند
env > $outدر آینده منجر به خروجی یکسانی شود.