نَــبَــرَ


نُــبَـرِزُ الخَـطَّ، فَيَـتَجَـلَّى البَـيَـانُ

كيف تفهم مديري الحزم في لينكس بدل أن تحفظ أوامرهم

مديرو الحزم في لينكس لا ينبغي التعامل معهم كقائمة أوامر للحفظ، لأن هذا يخلق معرفة هشة تنهار عند أول اختلاف بين التوزيعات. الفهم الحقيقي يبدأ عندما تدرك أن هذه الأدوات ليست أوامر متفرقة، بل أنظمة تفكير مختلفة تؤدي الوظيفة نفسها.

إذا فهمت المنطق، فلن تحتاج إلى الحفظ.

لماذا توجد عدة مديري حزم؟

السؤال الطبيعي الذي يطرحه كل مبتدئ هو: لماذا لا يوجد مدير حزم واحد فقط لكل توزيعات لينكس؟ الجواب يشبه تمامًا سبب وجود لغات متعددة بين البشر: ليست المشكلة في عدم الاتفاق، بل في اختلاف البيئات التي نشأت فيها هذه الأدوات. لأن لينكس ليس شركة، بل نظام.

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

الفلسفات الأربع الكبرى

APT — في Debian و Ubuntu

نشأ APT في بيئة تقدّس الاستقرار، والوضوح، والتدرّج، وتجنّب المفاجآت. فلسفته تقول: الأفضل أن يكون الأمر واضحًا وآمنًا، لا سريعًا وغامضًا.

ولهذا يستخدم كلمات كاملة مثل:

apt install
apt remove  
apt update

بدل الحروف المختصرة.

DNF — في Fedora و RHEL

تطوّر DNF من عالم الشركات والخوادم، لذلك لا تقتصر أولويته على البساطة، بل تشمل الاعتمادية، والتتبع، وإدارة الأخطاء، والقدرة على التراجع.

ولهذا يمتلك ميزات مثل:

dnf history

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

Zypper — في openSUSE

بُني Zypper بعقلية دقيقة جدًا، أقرب إلى عقلية المحاسب أو المهندس الصناعي. التركيز هنا على المعاملات الدقيقة، وإدارة المستودعات، والفصل بين أنواع التحديث، والأمان الإداري.

ولهذا يفرّق بوضوح بين:

zypper patch
zypper update  
zypper dup

فلسفته تقول: ليس كل تحديث هو نفس الشيء.

Pacman — في Arch Linux

وُلد Pacman من فلسفة مختلفة تمامًا: البساطة الصارمة، والشفافية الكاملة، ولا سحر مخفي، والمستخدم مسؤول.

لا يحاول Pacman حمايتك من نفسك، بل يعطيك الأدوات مباشرة. ولهذا يستخدم:

pacman -S
pacman -Q  
pacman -R

بدل الجمل الطويلة.

تقنيات الفهم

هناك دائمًا عالمان: العالم الخارجي (مكان الحزم المتاحة للتنزيل)، والعالم الداخلي (ما هو موجود فعلًا على جهازك).

هنا السؤال قبل أي أمر: هل أتعامل مع الخارج أم الداخل؟

العالمماذا يعني
الخارجالمستودعات على الإنترنت
الداخلالحزم المثبتة على جهازك
المزامنةجلب معلومات الحزم
التثبيتنقل الحزمة من الخارج للداخل

تقنية اليدين للحفظ

اليدالمعنىالوظائف
اليد اليمنى (S)الخارجSearch / Sync / Install / Update
اليد اليسرى (Q)الداخلQuery / Info / List / Check

قاعدة I.S.R.Q

كل مدير حزم يقوم بأربع وظائف أساسية:

الحرفالوظيفةالمعنى
IInstallتثبيت
SSearchبحث
RRemoveحذف
QQueryاستعلام / معلومات

تخيّل أن مدير الحزم مدينة كاملة

الشيءالمعنى
المستودعاتالمتاجر الخارجية
الحزم المثبتةما داخل منزلك
التبعياتالأسلاك والأنابيب المخفية
الكاشالمخزن المؤقت
القفلمنع تحديث شيء
السجلكاميرات المراقبة
المجموعاتصناديق جاهزة
downgradeآلة الزمن

قاعدة التذكّر: بيت الحزم

السؤال العقليالوظيفة
ماذا عندي؟Query
ماذا بالخارج؟Search
من يملك هذا؟Ownership
ماذا يحتاج؟Dependencies
كيف أرجع للخلف؟Downgrade
كيف أمنع التغيير؟Lock
أين الملفات؟List Files
ماذا حدث سابقاً؟History

تقنية الحفظ

الغرفة 1 — الخارج (S)

الفكرةالحرف
SearchS
SyncS
ServerS
StoreS

حرف S يشبه طريقًا يمتد للخارج.

الغرفة 2 — الداخل (Q)

كل ما يتعلق بما هو موجود عندك:

الفكرةالحرف
QueryQ
QuestionQ
Quick InfoQ
Quality CheckQ

حرف Q دائرة مغلقة… مثل شيء موجود داخل جهازك.

الغرفة 3 — العمليات الثقيلة

العمليةالصورة الذهنية
Upgradeصعود للأعلى
Downgradeنزول للأسفل
Lockقفل باب
Removeرمي شيء خارج المنزل

الغرفة 4 — التحقيق

السؤالالوظيفة
من يملك هذا الملف؟Ownership
لماذا هذه الحزمة مثبتة؟Dependencies
ماذا حدث أمس؟History
أين الملفات؟List files

قاعدة اللغة المشتركة

كل مديري الحزم يتحدثون نفس اللغة لكن بلهجات مختلفة.

المعنىpacmanaptdnfzypper
تثبيت-Sinstallinstallin
حذف-Rremoveremoverm
معلومات-Qishowinfoinfo
بحث-Sssearchsearchse

الفلاسفة الأربعة

1. Pacman — الجرّاح

الفلسفة: أفترض أنك تعرف ما تفعل. لا أشرح كثيرًا، لا أجمّل، لا أخفي.

المنطق:

اسم مدير الحزم -(الأمر) (التعديل المطلوب)

pacman -[ACTION][modifiers]

أمثلة مهمة:

sudo pacman -Syu

تحديث كامل

pacman -Ss firefox

بحث في المستودعات

pacman -Qs firefox  

بحث في المثبت محليًا

sudo pacman -S firefox

تثبيت

sudo pacman -Rns firefox

حذف كامل

pacman -Si firefox

S=خارج: معلومات من المستودع (الخارج)

pacman -Qi firefox

Q=داخل: معلومات من جهازك (المثبتة)

pacman -Ql firefox 

قائمة ملفات الحزمة

pacman -Qo /path 

من يملك هذا الملف؟

2. APT — أمين المكتبة المحافظ

الفلسفة: الوضوح أهم من الاختصار.

الفرق بين apt و apt-get:

  • apt: للاستخدام اليومي، ملون وأسهل، مناسب للبشر.
  • apt-get: للسكربتات، مستقر وقديم، مناسب للأتمتة.

استخدم apt يوميًا، و استخدم apt-get في السكربتات

الثنائية:

sudo apt update ← تحديث الفهرس فقط

sudo apt upgrade ← الترقية الفعلية

إذا كنت قادمًا من Windows:

apt update

= الضغط على Check for updates

apt upgrade  

= الضغط على Install now

الفرق أن لينكس يعطيك التحكم بالخطوتين بشكل منفصل.

أمثلة:

sudo apt install firefox

sudo apt remove firefox

sudo apt purge firefox ← حذف + الإعدادات

sudo apt autoremove ← الحزم اليتيمة

apt search firefox

3. DNF — المصلح الحديث

جميع المديرين يحفظون سجلاً، DNF يوفر rollback مدمج وسهل الاستخدام، بينما openSUSE يعتمد على Snapper و Btrfs لرجوع أقوى على مستوى النظام. في Arch، السجل نصي (/var/log/pacman.log)، وفي Ubuntu يحتاج لأدوات خارجية للتراجع

dnf history
sudo dnf history undo last

(مثل Git للحزم!)

أمثلة:

sudo dnf install firefox
dnf search firefox
dnf provides /usr/bin/firefox

4. Zypper — المحاسب الدقيق

ثلاث درجات للتحديث:

sudo zypper patch ← أمني فقط

sudo zypper update ← يومي عادي في Leap، لا يفضل في Tumbelweed

sudo zypper dup ← ترقية التوزيعة في Leap، يستخدم بشكل يومي في Tumbelweed فقط

أمثلة:

sudo zypper refresh
sudo zypper in firefox
sudo zypper rm firefox

نفس المهمة بأربع لغات

المهمةPacmanAPTDNFZypper
تحديث الفهرس-Sy في Arch لا يُنصح باستخدام -Sy وحده بسبب خطر partial upgrade.updatemakecacherefresh
ترقية النظام-Syuupgradeupgradeupdate
التثبيت-S pkginstall pkginstall pkgin pkg
الحذف-R pkgremove pkgremove pkgrm pkg
حذف كامل-Rnspurgeremoverm -u
البحث-Sssearchsearchse

قفل الحزم

التوزيعةالأمر
pacmanIgnorePkg
aptapt-mark hold
dnfdnf versionlock
zypperzypper addlock

التراجع لإصدار أقدم

التوزيعةالأمر
pacmanpacman -U
aptapt install pkg=version
dnfdnf downgrade
zypperzypper --oldpackage

أخطاء شائعة

1. التثبيت دون تحديث الفهرس

❌ sudo apt install firefox
✅ sudo apt update && sudo apt install firefox

2. التحديث الجزئي في Arch ( قد يدمر النظام!)

❌ sudo pacman -Sy firefox
✅ sudo pacman -Syu firefox

3. تجاهل تنظيف الكاش

مدير الحزمةالأمر
aptapt clean
pacmanpacman -Sc
dnfdnf clean all
zypperzypper clean

سيناريوهات :

تثبيت Firefox

pacman:    sudo pacman -Syu firefox

apt:  sudo apt install firefox

dnf:  sudo dnf install firefox

zypper: sudo zypper in firefox

هل يحتاج Refresh قبل Install ؟

التوزيعةهل يعمل Refresh تلقائي؟الأمر المُنصح به
Arch / Pacman❌ لا - خطير بدونهsudo pacman -Syu دائماً
Ubuntu / APTلا ❌sudo apt update && sudo apt install
Fedora / DNFغالبًا نعم ✅ (metadata check)يكفي sudo dnf install
openSUSE / Zypperنعم ✅يكفي sudo zypper in

طريقة التعلّم الصحيحة

لا تحفظ 50 أمرًا، ابدأ بـ 5 فقط:

  1. تحديث النظام
  2. تثبيت برنامج
  3. البحث
  4. الحذف
  5. معرفة المثبت

اختبر فهمك

س1: هل Firefox مثبت عندي؟ (داخل/خارج؟)

س2: ملف file.pkg.tar.zst في Arch؟

س3: من يملك /usr/bin/python3؟

الإجابات:

ج1: 
 pacman -Qs firefox | apt list --installed

ج2:
 sudo pacman -U file.pkg.tar.zst

ج3: 
pacman -Qo | dpkg -S | dnf provides | zypper se --provides

الواجهات الرسومية (GUI)

سطر الأوامر (CLI) قوي وسريع، لكنه يفترض أنك تعرف ماذا تفعل.

أما الواجهات الرسومية (GUI) فهي تحاول تحويل إدارة الحزم إلى شيء بصري:

  • أزرار بدل الأوامر
  • قوائم بدل الحفظ
  • بحث بصري بدل الكتابة
  • تثبيت بنقرة واحدة

الفكرة تشبه الفرق بين:

CLIGUI
كتابة أمر يدويالضغط على زر
تحتاج تذكر الأوامرتحتاج فهم الفكرة فقط
أسرع للمحترفينأسهل للمبتدئين

الواجهة الرسومية ليست مدير حزم جديد. هي فقط وجه فوق مدير الحزم الحقيقي.

مثلاً:

التوزيعةللمبتدئينللمحترفين
ArchShelly, PamacPamac + CLI
openSUSEMyrlinYaST
FedoraDNFDragoraDNFDragora + CLI
UbuntuUbuntu SoftwareSynaptic

نوعان من الواجهات الرسومية

1. مراكز البرامج (Software Centers)

متاجر البرامج.

أمثلة:

GNOME Software, KDE Discover, Ubuntu Software

ميزاتها

  • سهلة جداً
  • مناسبة للمبتدئين
  • تثبيت التطبيقات الرسومية بسهولة
  • صور وتقييمات ووصف

عيوبها

  • تخفي التفاصيل التقنية
  • أبطأ أحياناً
  • ليست جيدة لإدارة النظام المتقدمة

2. مدراء الحزم الرسوميون (GUI Package Managers)

هذه ليست متاجر، بل أدوات إدارة كاملة.

أمثلة:

  • Synaptic
  • YaST
  • Pamac
  • DNFDragora

ميزاتها

  • تحكم كامل
  • رؤية التبعيات
  • إدارة المستودعات
  • قفل الحزم
  • معرفة الملفات والسجلات

عيوبها

  • أعقد قليلاً
  • قد تربك المبتدئ بالبداية

🐚 الـ Shell الأذكى

الـ shell أو واجهة الأوامر تؤثر بشكل كبير جداً على تجربتك مع مديري الحزم.

تخيّل أنك داخل متجر كبير مليء بالحزم، لكنك لا تعرف أسماءها أو وظيفة كل واحدة منها.

المشكلة مع Bash العادي

عندما تحاول إكمال اسم حزمة تبدأ بـ fire:

sudo pacman -S fire<TAB>

غالباً ستحصل على أسماء فقط بدون أي شرح:

fire  firebird  firefox  firewalld  firejail

النتيجة: تضيع وقتك في التخمين والبحث عن كل حزمة بنفسك.

🐟 Fish صديق المبتدئين المثالي

Fish اختصار لـ Friendly Interactive SHell، وهي مصممة لتكون مريحة وواضحة للمبتدئين.

عند تجربة نفس الإكمال:

sudo pacman -S fire<TAB>

يمكن أن تظهر لك النتائج مع وصف يساعدك على الاختيار:

firefox    Web browser
firewalld  Firewall daemon
firejail   Security sandbox
  1. التثبيت

على Arch:

sudo pacman -S fish

على Ubuntu:

sudo apt install fish

على Fedora:

sudo dnf install fish

على openSUSE:

sudo zypper in fish
  1. جعلها الواجهة الافتراضية
chsh -s /usr/bin/fish
  1. أعد تشغيل الطرفية

5 ميزات تجعل Fish مثالية للمبتدئين

1️⃣ اقتراحات تلقائية

إذا كتبت هذا الأمر مرة:

sudo pacman -Syu

ثم كتبت لاحقاً:

sudo pac

ستقترح Fish الأمر السابق تلقائياً بلون باهت.

يمكنك قبول الاقتراح بالسهم الأيمن أو Tab.

2️⃣ تكملة مع الشرح

إذا طلبت إكمال خيارات pacman:

pacman -<TAB>

قد ترى شرحاً واضحاً للخيارات:

-S  --sync     Synchronize packages
-Q  --query    Query installed packages
-R  --remove   Remove packages
-U  --upgrade  Install local package file

3️⃣ تكملة ذكية للحزم

إذا كنت تريد التثبيت:

sudo pacman -S <TAB>

ستظهر لك الحزم المناسبة للتثبيت من المستودعات.

إذا كنت تريد الحذف:

sudo pacman -R <TAB>

ستظهر لك الحزم المثبتة عندك فقط.

4️⃣ تلوين الأخطاء والنجاح

الميزة هنا أن Fish تساعدك بصرياً على ملاحظة الخطأ بسرعة. وعند كتابة fish_config في الطرفية تفتح صفحة الإعدادات على المتصفح.

5️⃣ تعمل فوراً بدون إعداد معقد

بعد التثبيت، ستحصل على تجربة ممتازة مباشرة بدون الحاجة إلى إعدادات طويلة.

Zsh + Oh-My-Zsh — للمتقدمين

Zsh أكثر قابلية للتخصيص، لكنها تحتاج إلى إعداد أولي وفهمًا أعمق للنظام.

وهي ليست ثقيلة بشكل كارثي، لكن مع الإضافات والثيمات قد تصبح أبطأ وأعقد من Bash أو Fish.

  1. تثبيت Zsh
sudo pacman -S zsh
  1. تثبيت Oh-My-Zsh
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
  1. جعلها الواجهة الافتراضية
chsh -s /usr/bin/zsh
  1. أعد تشغيل الطرفية

الإعدادات

افتح ملف الإعدادات:

~/.zshrc

ثم عدّل قسم الإضافات ليكون مثلاً بهذا الشكل:

plugins=(
    git
    archlinux
    ubuntu
    dnf
    sudo
    command-not-found
)

إذا نسيت كتابة sudo وكتبت:

pacman -Syu

ثم ظهر خطأ صلاحيات، يمكنك الضغط مرتين بسرعة على ESC.

وسيتحوّل الأمر إلى:

sudo pacman -Syu

ميزة command-not-found

إذا كتبت أمراً غير مثبت مثل:

htop

يمكن أن تقترح عليك Zsh الحزمة المناسبة لتثبيته.

مثال:

sudo pacman -S htop

مثال اختصار التحديث في apt عند كتابة كلمة واحدة update

الأمر:

alias update='sudo apt update && sudo apt upgrade'

ينشي الاختصار ولكنه مؤقت. اذا اردت ايصبح دائماً.

fish:

alias update='sudo apt update && sudo apt upgrade'
funcsave update

zsh:

  • افتح nano ~/.zshrc
  • أضف: `alias update=‘sudo apt update && sudo apt upgrade
  • احفظ ونفذ: source ~/.zshrc

ابدأ بـ Fish اليوم.

بعد شهر، إذا أردت قوة أكبر وتخصيصاً أوسع، جرّب Zsh. انا شخصياً افضل بساطة Fish.

⚠️ قواعد الأمان الأساسية:

  1. لا تخلط المستودعات (repositories) من توزيعات مختلفة
  2. في Arch: دائماً استخدم -Syu معاً
  3. اقرأ ما سيُحذف قبل الموافقة
  4. احتفظ بنسخة احتياطية قبل ترقيات كبيرة

جدول المهارات

المهمة الذهنيةPacmanAPTDNFZypper
ماذا عندي مثبت؟pacman -Qapt list --installeddnf list installedzypper se -i
البحث بالخارجpacman -Ssapt searchdnf searchzypper se
البحث بالداخلpacman -Qsapt list --installed | grep pkgdnf list installedzypper se -i
معلومات حزمة-Si / -Qiapt showdnf infozypper info
ملفات الحزمةpacman -Qldpkg -Lrpm -qlrpm -ql
من يملك ملف؟pacman -Qodpkg -Sdnf provideszypper se --provides
تبعيات الحزمةpacman -Qiapt-cache dependsrepoquery --requiresinfo --requires
تنظيف الكاشpacman -Scapt cleandnf clean allzypper clean
قفل حزمةIgnorePkgapt-mark holdversionlockaddlock
فك القفلIgnorePkgapt-mark unholdversionlock deleteremovelock
الرجوع لإصدار أقدمpacman -Upkg=versiondnf downgrade--oldpackage
السجل والتاريخpacman.loghistory.logdnf historyzypper history
تثبيت مجموعةbase-develbuild-essentialgroup install-t pattern
تحديث الفهرس فقط-Syupdatecheck-updaterefresh