تخط المحتوى

نيكس

مدير حزم Nix هو أداة متقدمة للمستخدمين المتقدمين يمكن استخدامها للحصول على أي حزمة برمجيات حرة يمكنك تخيلها تقريبًا من مستودعه الكبير الذي يدار من قِبل المجتمع.

يمكن تثبيته على كيدي لينكس لنظام مستخدم واحد. يخزن Nix البرمجيات والاعتمادات تحت مسار /nix/store، ويحافظ على تحديث مسار البحث الخاص بك آليًا عند إضافة الأدوات أو إزالتها.

التثبيت

يمكن تثبيت مدير حزم Nix للمستخدم الحالي هكذا:

sh <(curl --proto '=https' --tlsv1.2 -L https://nixos.org/nix/install) --no-daemon

اخرج ثم عد للولوج مجددًا، ثم اختبر:

nix-shell -p mc emacs-nox  # أنت الآن داخل صدفة تحتوي على mc و emacs

لاحظ أنه عندما تخرج من هذه الصدفة، لن يعود mc و emacs في مسار بحث صدفتك. راجع القسم التالي لجعل هذه الأدوات متاحة بشكل دائم.

راجع https://nixos.org/download/#nix-install-linux لمزيد من التفاصيل.

تثبيت الحزم المستمر

استخدم nix-env -iA أو nix-env --install --attr لتثبيت الحزم في /nix/store وجعلها متاحة في مسار بحث المستخدم الخاص بك:

$ nix-env -f '' -iA mc
⋮
building '/nix/store/1q2sh2f178jx9fl37gd9ks85ysfvpwd9-user-environment.drv'...

ينشئ هذا ”بيئة“ جديدة تحتوي على جميع تغييرات الحالة اللازمة لجعل حزمة mc متاحة، ويمكن تقديم هذه البيئة للأمام أو إرجاعها للخلف. هذا هو الجاذب ”الحقيقي“ لنظام إدارة حزم Nix، ولكنه يتجاوز نطاق هذا الدليل.

تحقق من أن الأمر mc متاح الآن للمستخدم الخاص بك:

$ which mc
/home/username/.nix-profile/bin/mc

أزل الحزم باستخدام nix-env --uninstall أو nix-env -e:

$ nix-env -e mc
تجري إزالة التثبيت لـ 'mc-4.8.33'
يجري بناء '/nix/store/rqbghiyds6f7a49qiwi9gmq7bnkgn9qi-user-environment.drv'...

راجع قسم [[#garbage-collection|جمع المهملات]] أدناه لمعرفة كيفية استعادة المساحة المستخدمة بواسطة الحزم التي لم تعد تستخدمها.

راجع https://nix.dev/manual/nix/latest/command-ref/nix-env.html لمزيد من التفاصيل.

استخدام nix profile

لا تزال واجهة nix <command> تُعتبر تقنياً تجريبية experimental (يمكن العثور على مزيد من السياق حول الحالة "التجريبية" لـ nix profile في طلب التعليقات هذا)، ولكنها في الممارسة العملية مستخدمة على نطاق واسع، وأكثر راحة. ستعمل ميزة الإكمال التلقائي وخيارات --help لمختلف الأوامر الفرعية لـ nix تلقائياً في التثبيت الجديد. مثل nix-env، ستقوم nix profile بتثبيت الحزم في /nix/store وجعلها متاحة في مسار البحث الخاص بك، وتظل مستمرة بين جلسات الولوج.

إليك مثال بسيط باستخدام nix profile لتثبيت أداة البحث في الكود ag:

$ mkdir -p ~/.config/nix
$ cat >> ~/.config/nix/nix.conf <<EOF
experimental-features = nix-command flakes
EOF

$ nix search nixpkgs silver searcher
⋮
* legacyPackages.x86_64-linux.silver-searcher (2.2.0)
  أداة للبحث في الكود شبيهة بـ ack، ولكنها أسرع

$ nix profile add nixpkgs#silver-searcher
$ which ag
/home/username/.nix-profile/bin/ag

لسرد الحزم المثبتة أو إزالتها:

$ nix profile list
⋮
الاسم:               silver-searcher
سمة Flake:    legacyPackages.x86_64-linux.silver-searcher
مسار URL الأصلي لـ Flake: flake:nixpkgs
مسار URL المقفل لـ Flake:   github:NixOS/nixpkgs/f08e6b11a5ed43637a8ac444dd44118bc7d273b9?narHash=sha256-7vUo0qWCl/rip%2Bfzr6lcMlz9I0tN/8m7d5Bla/rS2kk%3D
مسارات المخزن:        /nix/store/l120si3zsshmf3jr7dkn5dvcj0n586xb-silver-searcher-2.2.0

$ nix profile remove silver-searcher

راجع قسم جمع المهملات أدناه لمعرفة كيفية استعادة المساحة المستخدمة بواسطة الحزم التي لم تعد تستخدمها.

راجع https://nix.dev/manual/nix/latest/command-ref/new-cli/nix3-profile.html لمزيد من التفاصيل.

إعادة تثبيت Nix

إذا جرى تفعيل ميزة nix profile "التجريبية"، فستحتاج إلى تعطيلها وحذف ملفات الحالة المرتبطة بتشكيلة المستخدم الخاصة بك قبل إعادة التثبيت، وإلا فستظهر لك رسالة خطأ كهذه:

خطأ: التشكيلة '/home/username/.local/state/nix/profiles/profile' غير متوافقة مع 'nix-env'؛ يرجى استخدام 'nix profile' بدلاً من ذلك
تحذير: سيؤدي هذا إلى نسيان أي حزم جرى تثبيتها مسبقاً!

عطّل سطر experimental-features بجعله تعليقاً في ملف إعدادات Nix الخاص بك، ثم احذف دليل حالة التشكيلة:

$ sed -i'' 's/^experimental-features = nix-command flakes$/#&/' ~/.config/nix/nix.conf
$ rm -rf ~/.local/state/nix/profiles/profile

الآن يمكنك تكرار خطوات التثبيت.

جمع المهملات لاستعادة مساحة القرص

لاحظ أن كلاً من nix-env -e و nix profile remove يزيلان الأوامر التي توفرها الحزمة من بيئة المستخدم الحالية، ولكن البرمجيات تظل مثبتة بالفعل في /nix/store حتى يُجمع المهملات.

يمكنك فرض عملية جمع المهملات تلك، لاستعادة مساحة القرص، باستخدام أحد الأوامر التالية:

nix-store --gc           # جمع مهملات روتيني
nix-collect-garbage -d   # إزالة الحزم "التي لا يمكن الوصول إليها" من المخزن

إزالة Nix

لإزالة مدير الحزم Nix، نفّذ الأوامر التالية:

sudo systemctl disable --now nix-daemon.service nix-daemon.socket

sudo rm -rf /nix /etc/nix /etc/profile.d/nix.sh /etc/tmpfiles.d/nix-daemon.conf /nix /root/.nix-channels /root/.nix-defexpr /root/.nix-profile /root/.cache/nix ~/.nix-channels ~/.nix-defexpr ~/.nix-profile ~/.cache/nix

for i in $(seq 1 32); do sudo userdel nixbld$i; done

sudo groupdel nixbld

انظر أيضًا


المقالة مساهمة من Ernstki تحت ترخيص CC-BY-4.0.