دو مفهوم کلیدی در دنیای مدیریت بستهها و سیستم عاملها هستند که با رویکردهای منحصربهفرد خود توانستهاند توجه بسیاری از توسعهدهندگان و مدیران سیستم را جلب کنند. در این مقاله، با هر دو آشنا خواهیم شد و به ویژگیها و کاربردهای آنها میپردازیم.
یک ابزار مدیریت بسته عملکردی است که به توسعهدهندگان این امکان را میدهد تا محیطهای نرمافزاری قابل تکرار، ایزوله و دقیقاً قابل پیشبینی ایجاد کنند.
ایزولهسازی بستهها: هر بسته در مسیر جداگانهای نصب میشود، از بروز تضاد میان نسخهها جلوگیری میکند.
پشتیبانی از بازگشت: بهسادگی میتوانید به نسخههای قبلی بستهها بازگردید.
پیکربندی اعلامی: تمام وابستگیها و تنظیمات یک پروژه در یک فایل مشخص تعریف میشود.
نمونه با زبان Go version 1.23.0
{
pkgs ? import <nixpkgs> {}
}:
pkgs.mkShell {
buildInputs = [
pkgs.go_1_23
];
shellHook = ''
echo "به محیط توسعه خوش آمدید!"
'';
}بریم داخل پوشه ها مثال هارو ببینیم :)
یک توزیع لینوکسی است که بر پایه Nix ساخته شده است. این سیستم عامل به طور کامل قابل تنظیم و ویرایش است و تمام تنظیمات آن در فایلهای پیکربندی تعریف میشود. این رویکرد، مدیریت سیستمها را ساده میکند.
سیستم اعلامی: تمام جنبههای سیستم، از نصب بستهها گرفته تا تنظیمات شبکه، در فایلهای پیکربندی تعریف میشود.
ایزولهسازی کامل: بستهها و تنظیمات از یکدیگر کاملاً جدا هستند.
بهروزرسانی و بازگشت ساده: میتوانید سیستم را بدون ریسک ارتقا دهید و در صورت نیاز به وضعیت قبلی بازگردید.
خوراک DevOps : ابزار مناسبی برای ایجاد و مدیریت محیطهای یکسان برای توسعه، آزمایش و تولید.
فایل زیر یک سیستم NixOS را با سرور SSH و یک کاربر جدید پیکربندی میکند
{
config, pkgs, ... }:
{
users.users.john = {
isNormalUser = true;
home = "/home/john";
shell = pkgs.bash;
};
services.openssh.enable = true;
system.stateVersion = "23.05"; # مطابق با نسخه NixOS
}در NixOS، نوع محیط دسکتاپ (مثل GNOME، KDE، XFCE و غیره) به راحتی از طریق فایل پیکربندی قابل تغییر است. مراحل زیر را میتوانید برای تنظیم محیط دسکتاپ دنبال کنید:
-
فایل پیکربندی NixOS که معمولاً در مسیر /etc/nixos/configuration.nix قرار دارد را باز کنید.
-
ویرایش تنظیمات برای مثال
GNOME
{ config, pkgs, ... }:
{
services.xserver.enable = true;
services.xserver.displayManager.gdm.enable = true;
services.xserver.desktopManager.gnome.enable = true;
}KDE Plasma
{ config, pkgs, ... }:
{
services.xserver.enable = true;
services.xserver.displayManager.sddm.enable = true;
services.xserver.desktopManager.plasma5.enable = true;
}- ذخیره کنید
sudo nixos-rebuild switch
- سیستم را ریاستارت کنید تا تغییرات اعمال شوند.
System Profiles یکی از ویژگیهای مهم NixOS است که به کاربران اجازه میدهد بین نسخههای مختلف سیستم سوئیچ کنند یا به تنظیمات قبلی بازگردند.
با دستور زیر میتوانید تمام نسلهای ذخیرهشده (Generations) را ببینید
nix-env --list-generations
خروجی
1 2024-12-24 18:45:12 Initial system
2 2024-12-25 10:12:08 Updated Nginx configuration
3 2024-12-26 14:30:25 Installed Docker and tools
برگشت به نسخه ها و تغییرات
nix-env --rollback
پایداری و قابلیت تکرار: اطمینان از عملکرد یکسان نرمافزارها در تمام مراحل توسعه تا تولید.
مدیریت ساده: ارتقا، حذف و بازگشت به وضعیتهای قبلی سیستم به آسانی.
صرفهجویی در زمان: خودکارسازی فرایندهای پیچیده و کاهش خطاهای انسانی.
مناسب برای تیمهای بزرگ: ایجاد محیطهای مشابه برای تمام اعضای تیم.