0%
Debian وUbuntu: دليل الإدارة الشامل

Debian وUbuntu: دليل الإدارة الشامل

تعلّم إدارة Debian وUbuntu: APT والمستودعات وPPA وdpkg والترقية بين الإصدارات وحل المشكلات. دليل شامل بأمثلة عملية.

I

InSkillCoach

· دقيقة

Debian وUbuntu: دليل الإدارة الشامل

تشكّل Debian وUbuntu عائلة توزيعات Linux الأكثر انتشارًا في العالم، سواء على الخوادم أو على أجهزة سطح المكتب. وإذا كنت في بداية طريقك في إدارة الأنظمة، فمن المرجّح أن يعمل أول جهاز Linux لديك على إحدى هاتين التوزيعتين. في هذا الدليل سنغطي كل ما تحتاج إليه لإدارة نظام Debian أو Ubuntu يوميًا: إدارة الحزم باستخدام APT، وإعداد المستودعات، والترقية بين الإصدارات، وحل أكثر المشكلات شيوعًا.

1. Debian وUbuntu: ما الفروق؟

بُنيت Ubuntu انطلاقًا من Debian: فنحو 90٪ من حزم Ubuntu تأتي مباشرة من مستودعات Debian. لذلك تتشارك التوزيعتان صيغة الحزم نفسها (.deb)، ومدير الحزم APT نفسه، وجزءًا كبيرًا من التوثيق. غير أنهما تختلفان في عدة نقاط مهمة.

المعيارDebianUbuntu
الجهة المطورةمشروع مجتمعيCanonical (شركة)
دورة الإصدارتقريبًا كل سنتين، «عندما يكون جاهزًا»كل 6 أشهر، بمواعيد ثابتة
إصدارات LTSكل إصدار مستقر (~5 سنوات مع LTS)إصدار LTS كل سنتين (دعم لمدة 5 سنوات)
الاستقرارمحافظة جدًا، حزم مجرَّبةحزم أحدث
البرمجيات المملوكةمنفصلة (non-free)مدمجة بسهولة أكبر
Snapغير موجود افتراضيًامثبّت ومستخدم افتراضيًا
الجمهور المستهدفالخوادم، المتمسكون بالبرمجيات الحرةالمبتدئون، أجهزة سطح المكتب، السحابة

باختصار: تُعطي Debian الأولوية للاستقرار وحرية البرمجيات، بينما تُعطي Ubuntu الأولوية لسهولة الاستخدام وحداثة الحزم. وبالنسبة لخادم الإنتاج، كلتاهما خيار ممتاز.

2. فهم دورة الإصدارات وإصدارات LTS

إصدارات Ubuntu

تُصدر Ubuntu نسخة جديدة كل ستة أشهر، ويُرقَّم الإصدار بالسنة والشهر: 24.04 تعني أبريل 2024. وكل سنتين يكون إصدار أبريل نسخة LTS (Long Term Support) يُدعم لمدة خمس سنوات. أما الإصدارات الوسيطة فتُدعم تسعة أشهر فقط.

# عرض الإصدار المثبّت
lsb_release -a

# بديل لا يتطلب lsb_release
cat /etc/os-release

قاعدة بسيطة: على الخادم، ثبّت دائمًا إصدار LTS (‏20.04 أو 22.04 أو 24.04…). أما الإصدارات الوسيطة فهي مخصصة لأجهزة المستخدمين الذين يريدون أحدث المزايا.

إصدارات Debian

تحافظ Debian على ثلاثة فروع بالتوازي:

  • stable: إصدار الإنتاج، ولا يُحدَّث إلا لأسباب أمنية؛
  • testing: الإصدار المستقر المقبل، قيد الإعداد؛
  • unstable (sid): فرع التطوير، حيث تصل الحزم الجديدة.

يحمل كل إصدار مستقر اسمًا رمزيًا مأخوذًا من شخصيات Toy Story (‏Bookworm وTrixie…). ويدعم فريق الأمان الإصدار المستقر نحو ثلاث سنوات، ثم يمدّد مشروع LTS دعمه سنتين إضافيتين.

3. التعمق في APT

APT (‏Advanced Package Tool) هي الأداة المركزية لإدارة الحزم. وفيما يلي الأوامر التي ستستخدمها كل يوم.

تحديث قائمة الحزم

# تنزيل فهارس المستودعات (لا يغيّر شيئًا في النظام)
sudo apt update

لا يحدّث هذا الأمر أي شيء بحد ذاته، بل يُنعش قائمة الحزم المتاحة فقط. ويجب تشغيله دائمًا قبل التثبيت أو التحديث.

تحديث الحزم المثبّتة

# تحديث الحزم دون حذف حزم أو تثبيت حزم جديدة
sudo apt upgrade

# تحديث مع السماح بتثبيت الحزم أو حذفها
# (ضروري لتحديثات النواة مثلًا)
sudo apt full-upgrade

الفرق مهم: يرفض upgrade أي تحديث يتطلب حذف حزمة، بينما يقبل full-upgrade (المعروف سابقًا بـ dist-upgrade) معالجة تغييرات الاعتماديات. وعلى الخادم، اعتد قراءة ما يقترحه full-upgrade بعناية قبل الموافقة.

تثبيت الحزم وحذفها

# تثبيت حزمة
sudo apt install nginx

# تثبيت عدة حزم دفعة واحدة
sudo apt install curl git htop

# حذف حزمة مع الإبقاء على ملفات إعدادها
sudo apt remove nginx

# حذف حزمة مع ملفات إعدادها
sudo apt purge nginx

# حذف الاعتماديات التي لم تعد لازمة
sudo apt autoremove

شغّل apt autoremove بانتظام: فعند حذف حزمة، تبقى اعتمادياتها مثبّتة وتتراكم مع الوقت.

البحث عن الحزم وفحصها

# البحث عن حزمة بكلمة مفتاحية
apt search "serveur web"

# عرض تفاصيل حزمة (الإصدار، الحجم، الاعتماديات، الوصف)
apt show nginx

# عرض الإصدارات المتاحة ومصدرها
apt-cache policy nginx

# عرض اعتماديات حزمة
apt-cache depends nginx

# عرض الحزم التي تعتمد على حزمة معيّنة
apt-cache rdepends nginx

التثبيت (Pinning): تجميد الإصدارات أو تفضيلها

يتيح الـ pinning التحكم في الإصدار الذي يفضّله APT لحزمة ما، مثلًا لمنع تحديثها أو لجلب حزمة من مستودع محدد.

# منع أي تحديث لحزمة (الطريقة البسيطة)
sudo apt-mark hold nginx

# السماح بالتحديثات من جديد
sudo apt-mark unhold nginx

# عرض الحزم المجمّدة
apt-mark showhold

لتحكم أدق، أنشئ ملفًا في /etc/apt/preferences.d/:

# /etc/apt/preferences.d/nginx-pin
# أولوية > 1000: تفرض هذا الإصدار حتى لو لزم الرجوع إلى إصدار أقدم
Package: nginx
Pin: version 1.24.*
Pin-Priority: 1001

4. sources.list والمستودعات

أين تُعرَّف المستودعات

تُعلَن مستودعات APT في الملف /etc/apt/sources.list وفي ملفات المجلد /etc/apt/sources.list.d/. وفي الإصدارات الحديثة (Debian 12+ وUbuntu 24.04+)، تحلّ صيغة «deb822» في ملفات .sources تدريجيًا محل الصيغة القديمة.

# الصيغة القديمة (سطر واحد لكل مستودع)
# النوع  العنوان  التوزيعة  المكونات
deb http://deb.debian.org/debian bookworm main contrib non-free-firmware
deb http://security.debian.org/debian-security bookworm-security main

للمكونات معانٍ محددة:

  • main: برمجيات حرة مدعومة رسميًا؛
  • contrib (في Debian): برمجيات حرة تعتمد على برمجيات غير حرة؛
  • non-free / non-free-firmware (في Debian): برمجيات وبرامج ثابتة (firmware) مملوكة؛
  • universe / multiverse (في Ubuntu): حزم مجتمعية وغير حرة.

تعديل المستودعات بطريقة سليمة

# لا تعدّل sources.list يدويًا دون نسخة احتياطية
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak

# أضف مستودعاتك الخارجية في ملفات منفصلة بدلًا من ذلك
sudo nano /etc/apt/sources.list.d/mon-depot.list

# بعد أي تعديل، حدّث الفهارس
sudo apt update

تتطلب المستودعات الخارجية الحديثة مفتاح توقيع يُخزَّن في /etc/apt/keyrings/ ويُشار إليه بالخيار signed-by:

# مثال: إضافة مستودع Docker الرسمي
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \
  sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

echo "deb [signed-by=/etc/apt/keyrings/docker.gpg] \
  https://download.docker.com/linux/ubuntu noble stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list

5. مستودعات PPA في Ubuntu

مستودعات PPA (‏Personal Package Archives) هي مستودعات شخصية مستضافة على Launchpad، وهي خاصة بنظام Ubuntu البيئي. وتتيح الحصول على إصدارات أحدث من برنامج ما مقارنة بالمستودعات الرسمية.

# إضافة PPA (يضيف المستودع ومفتاحه تلقائيًا)
sudo add-apt-repository ppa:ondrej/php
sudo apt update

# حذف PPA
sudo add-apt-repository --remove ppa:ondrej/php

# حذف PPA وإرجاع الحزم إلى الإصدارات الرسمية
sudo apt install ppa-purge
sudo ppa-purge ppa:ondrej/php

تنبيه: يتولى صيانة PPA فرد أو فريق خارجي. لا تضف إلا مستودعات PPA من مصادر معروفة، وتجنّبها على خوادم الإنتاج عندما يتوفر بديل رسمي.

6. dpkg: المستوى المنخفض

يعتمد APT على dpkg، وهي الأداة منخفضة المستوى التي تثبّت ملفات .deb فعليًا. وستحتاج إليها في بعض الحالات المحددة.

# تثبيت ملف .deb نُزّل يدويًا
sudo dpkg -i paquet.deb

# إذا أبلغ dpkg عن اعتماديات مفقودة، دع APT يحلّها
sudo apt install -f

# الطريقة الحديثة الموصى بها: apt يتولى ملف .deb واعتمادياته معًا
sudo apt install ./paquet.deb

# عرض جميع الحزم المثبّتة
dpkg -l

# التحقق من تثبيت حزمة
dpkg -l | grep nginx

# عرض الملفات التي ثبّتتها حزمة
dpkg -L nginx

# معرفة الحزمة التي يتبع لها ملف
dpkg -S /etc/nginx/nginx.conf

7. الترقية بين الإصدارات

Ubuntu: do-release-upgrade

توفّر Ubuntu أداة مخصصة للانتقال من إصدار إلى الذي يليه:

# 1. حدّث النظام بالكامل قبل أي شيء
sudo apt update && sudo apt full-upgrade
sudo reboot

# 2. ابدأ الترقية
sudo do-release-upgrade

# التحقق من السلوك المضبوط (lts أو normal)
cat /etc/update-manager/release-upgrades

عند ضبط Prompt=lts في هذا الملف، لا تعرض الأداة سوى الانتقال من LTS إلى LTS (من 22.04 إلى 24.04 مثلًا)، وهو الإعداد الموصى به على الخوادم. لاحظ أن الترقية من إصدار LTS إلى الذي يليه لا تُعرض إلا بعد صدور أول إصدار تصحيحي (24.04.1 مثلًا).

Debian: تعديل المصادر

في Debian تتم الترقية بتغيير الاسم الرمزي في المصادر ثم تشغيل تحديث كامل:

# 1. نسخ احتياطي واستبدال الاسم الرمزي (مثلًا bookworm -> trixie)
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
sudo sed -i 's/bookworm/trixie/g' /etc/apt/sources.list

# 2. ترقية على مرحلتين، كما توصي ملاحظات الإصدار
sudo apt update
sudo apt upgrade --without-new-pkgs
sudo apt full-upgrade
sudo reboot

وفي جميع الحالات: خذ نسخة احتياطية كاملة قبل الترقية، واقرأ ملاحظات الإصدار، ولا تتخطَّ أي إصدار أبدًا (الانتقال مباشرة من Debian 11 إلى 13 غير مدعوم).

8. التحديثات التلقائية باستخدام unattended-upgrades

على الخادم، يُعدّ تطبيق التصحيحات الأمنية تلقائيًا ممارسة جيدة تكاد تكون ضرورية.

# التثبيت والتفعيل
sudo apt install unattended-upgrades
sudo dpkg-reconfigure -plow unattended-upgrades

يوجد الإعداد في /etc/apt/apt.conf.d/50unattended-upgrades:

// مقتطف من إعداد نموذجي
Unattended-Upgrade::Allowed-Origins {
    "${distro_id}:${distro_codename}-security";
};
// إعادة تشغيل تلقائية عند الحاجة (مثلًا عند تحديث النواة)
Unattended-Upgrade::Automatic-Reboot "true";
Unattended-Upgrade::Automatic-Reboot-Time "04:00";
# اختبار الإعداد دون تطبيق أي شيء
sudo unattended-upgrade --dry-run --debug

# الاطلاع على السجلات
less /var/log/unattended-upgrades/unattended-upgrades.log

9. Snap مقابل APT

تروّج Ubuntu لصيغة Snap، وهي حزم مستقلة بذاتها تضم اعتمادياتها. والموضوع مثير للانقسام، ومن المفيد فهم المفاضلات.

المعيارAPT (.deb)Snap
الاعتمادياتمشتركة بين الحزممضمّنة في كل snap
الحجم على القرصصغيركبير (مكتبات مكررة)
حداثة الإصداراتثابتة طوال عمر الإصداردائمًا أحدث إصدار
التحديثاتيتحكم فيها المسؤولتلقائية (يصعب منعها)
إقلاع التطبيقاتسريعأبطأ (تركيب squashfs)
العزل الأمنيلا يوجد افتراضيًاعزل ضمن بيئة sandbox
التوفرجميع توزيعات .debUbuntu بصورة رئيسية
# أوامر snap الأساسية
snap list                      # الـ snaps المثبّتة
sudo snap install code --classic
sudo snap refresh              # التحديث
sudo snap remove code

عمليًا: على الخادم، فضّل APT لكل ما هو متوفر بصيغة .deb. وتبقى الـ snaps مناسبة لتطبيقات سطح المكتب الحديثة أو للأدوات التي لا يوزعها ناشرها إلا بهذه الطريقة.

10. حل المشكلات الشائعة

قفل dpkg: «Could not get lock»

تظهر هذه الرسالة عندما تكون عملية أخرى تستخدم APT بالفعل (غالبًا تحديث تلقائي في الخلفية):

# تحديد العملية التي تمسك القفل
sudo lsof /var/lib/dpkg/lock-frontend

# انتظر حتى تنتهي، أو تحقق من عمليات apt الجارية
ps aux | grep -E "apt|dpkg"

لا تحذف ملف القفل يدويًا إلا كملاذ أخير، وبعد التأكد من عدم وجود أي عملية apt أو dpkg قيد التشغيل: فحذف القفل أثناء تثبيت جارٍ قد يُفسد قاعدة بيانات الحزم.

# كملاذ أخير فقط، إذا لم تكن هناك أي عملية نشطة
sudo rm /var/lib/dpkg/lock-frontend /var/lib/dpkg/lock
sudo dpkg --configure -a

الاعتماديات المعطوبة

# محاولة الإصلاح التلقائي
sudo apt install -f

# إكمال إعداد الحزم التي انقطعت عمليتها
sudo dpkg --configure -a

# تنظيف الذاكرة المؤقتة وإعادة تنزيل الفهارس
sudo apt clean
sudo apt update

# إعادة تثبيت حزمة تالفة
sudo apt install --reinstall nom-du-paquet

امتلاء مساحة القرص بسبب ذاكرة APT المؤقتة

# عرض حجم الذاكرة المؤقتة
du -sh /var/cache/apt/archives

# حذف ملفات .deb الخاصة بالإصدارات القديمة فقط
sudo apt autoclean

# إفراغ الذاكرة المؤقتة بالكامل
sudo apt clean

أفضل الممارسات

  • على الخادم، ثبّت إصدارات LTS فقط (Ubuntu) أو الإصدار stable (Debian).
  • شغّل sudo apt update قبل أي تثبيت أو تحديث.
  • اقرأ قائمة التغييرات التي يقترحها full-upgrade قبل الموافقة.
  • فعّل unattended-upgrades للتصحيحات الأمنية.
  • أضف المستودعات الخارجية في /etc/apt/sources.list.d/ مع مفتاح signed-by، وليس في الملف الرئيسي أبدًا.
  • اقتصر على أقل عدد ممكن من مستودعات PPA وتجنّبها في الإنتاج.
  • خذ نسخة احتياطية كاملة قبل كل ترقية بين الإصدارات.
  • نظّف بانتظام باستخدام apt autoremove وapt autoclean.

الخاتمة

تقدّم Debian وUbuntu واحدة من أنضج منظومات إدارة الحزم في عالم Linux. وبإتقان APT وبنية المستودعات وآليات الترقية وبعض ردود الفعل الأساسية في حل المشكلات التي عرضناها هنا، تملك كل ما يلزم لإدارة هذه الأنظمة بثقة واطمئنان يومًا بعد يوم. والخطوة المنطقية التالية في تعلّمك: إدارة الخدمات باستخدام systemd، وضبط جدار الحماية باستخدام ufw، وأتمتة عمليات النشر. تدرّب على آلة افتراضية، واكسر الأشياء ثم أصلحها: بهذه الطريقة يتقدّم المرء.

InSkillCoach

نبذة عن InSkillCoach

خبير في التدريب والتقنيات

مدرّب متخصص في التقنيات المتقدمة والذكاء الاصطناعي، تدعمه شركة GNeurone Inc.

الشهادات:

  • AWS Certified Solutions Architect – Professional
  • شهادات Google Cloud
  • Microsoft Certified: DevOps Engineer Expert
  • Certified Kubernetes Administrator (CKA)
  • CompTIA Security+
1.4k
147

التعليقات

التعليقات مدعومة عبر GitHub Discussions

سجّل الدخول باستخدام GitHub للمشاركة في النقاش

تم نسخ الرابط!