Debian وUbuntu: دليل الإدارة الشامل
تشكّل Debian وUbuntu عائلة توزيعات Linux الأكثر انتشارًا في العالم، سواء على الخوادم أو على أجهزة سطح المكتب. وإذا كنت في بداية طريقك في إدارة الأنظمة، فمن المرجّح أن يعمل أول جهاز Linux لديك على إحدى هاتين التوزيعتين. في هذا الدليل سنغطي كل ما تحتاج إليه لإدارة نظام Debian أو Ubuntu يوميًا: إدارة الحزم باستخدام APT، وإعداد المستودعات، والترقية بين الإصدارات، وحل أكثر المشكلات شيوعًا.
1. Debian وUbuntu: ما الفروق؟
بُنيت Ubuntu انطلاقًا من Debian: فنحو 90٪ من حزم Ubuntu تأتي مباشرة من مستودعات Debian. لذلك تتشارك التوزيعتان صيغة الحزم نفسها (.deb)، ومدير الحزم APT نفسه، وجزءًا كبيرًا من التوثيق. غير أنهما تختلفان في عدة نقاط مهمة.
| المعيار | Debian | Ubuntu |
|---|---|---|
| الجهة المطورة | مشروع مجتمعي | 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 |
| التوفر | جميع توزيعات .deb | Ubuntu بصورة رئيسية |
# أوامر 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
خبير في التدريب والتقنيات
مدرّب متخصص في التقنيات المتقدمة والذكاء الاصطناعي، تدعمه شركة GNeurone Inc.
الشهادات:
- AWS Certified Solutions Architect – Professional
- شهادات Google Cloud
- Microsoft Certified: DevOps Engineer Expert
- Certified Kubernetes Administrator (CKA)
- CompTIA Security+
التعليقات
التعليقات مدعومة عبر GitHub Discussions
سجّل الدخول باستخدام GitHub للمشاركة في النقاش