مدیر بسته nix مدیر بسته‌ای متفاوت

اگر با توزیع‌های لینوکس کار کرده باشید حتما دیدید که هر کدام یک مدیر بسته نرم‌افزاری (package manager) دارند که برای نصب نرم‌افزار از آن‌ها استفاده می‌کنید (مثل apt-get، yum، pacman، emerge و …). اما مدیر بسته nix که به صورت پیش‌فرض بر روی NixOS نصب است چیزی فراتر از یک مدیر بسته است. زیرا در توزیع NixOS علاوه بر نصب نرم‌افزار، کار تنظیمات سیستم را نیز بر عهده می‌گیرد.

در واقع مدیر بسته nix دارای یک زبان nix build language است که یک زبان functional محسوب می‌شود. توسط این زبان تنظیمات سیستم از تنظیمات هسته گرفته تا تنظیمات مربوط به نرم‌افزارهایی مانند openssh، nginx و حتی تنظمیات بوت و گراب همه و همه توسط زبان nix و در فایلی که به اسم configuration.nix هست نوشته می‌شود. این فایل در توزیع NixOS در آدرس etc/nix/configuration.nix/ وجود دارد، با تغییر دادن این فایل و سپس اجرای دستور زیر کل سیستم بر اساس آن ساخته می‌شود و NixOS بدون در نظر گرفتن اینکه قبلا چه چیزی نصب بوده  و یا چه تنظیماتی بر روی سیستم فعال بوده سیستم جدید را می‌سازد و اگر نرم‌افزاری وجود نداشته باشد آن را نصب می‌کند.

$ nixos-rebuild switch

مدیر بسته nix در NixOS تمامی تنظیمات قبلی را نگاه می‌دارد و در صورتی که شما به هر دلیلی پس از انجام تنظیمات جدید، از آن خوشتان نیامد به راحتی و به سرعت می‌توانید تنظیمات را به حالت قبل بازگردانید. این کار توسط دستور زیر انجام می‌گیرد.

$ nixos-rebuild switch --rollback

با این کار در منوی گراب شما تمامی تنظیمات قبل آورده می‌شود و می‌توانید از بین آن‌ها انتخاب کنبد.

علاوه بر این خصوصیات مدیر بسته nix این امکان را می‌دهد که هر کاربر پروفایل مربوط به خود را داشته باشد که از پروفایل بقیه کاربران مجزاست می‌تواند ورژن‌های مختلفی از یک نرم‌افزار را نسبت به کاربری دیگر داشته باشد. به عبارتی دیگر openssh-4.6 برای پروفایل اول و openssh-5.2 برای پروفایل دوم نصب باشد. اما چنین چیزی چطور ممکن است؟ همان طور که می‌دانید بعد از نصب یک نرم‌افزار در لینوکس دایرکتوری به اسم آن نرم ‌افزار ایجاد می‌شود و اگر ورژن جدید آن نرم‌افزار را نصب کنید ورژن قبلی پاک می‌شود. مدیر بسته nix این مشکل را با قرار دادن یک hashing scheme قبل از اسم نرم‌افزار دایرکتوری با نام یکتا ایجاد می‌کند و در نتیجه دو ورژن مختلف یک نرم‌افزار در یک دایرکتوری قرار نمی‌گیرند و می‌توان در یک سیستم چندین ورژن از یک نرم‌افزار را توسط nix نصب کرد.

علاوه بر تمامی این خصوصیات nix به صورت portable ساخته شده، به این معنی که شما nix را می‌توانید در تمامی توزیع‌های لینوکس و حتی بر روی MacOSX و با روش‌هایی روی ویندوز و freebsd نیز نصب کنید، زیرا nix کاملا مستقل از سیستم شما عمل می‌کند.

سایت توزیع  nixos.org