في Linux، تُعد apt وdnf وpacman الأساس الرئيسي لتثبيت البرامج وتحديثها. وعندما تبدو “معطلة”، فالمشكلة لا تعني فقط عدم القدرة على تثبيت تطبيق جديد، بل قد تؤدي أيضاً إلى توقف تحديثات الأمان وصعوبة كبيرة في صيانة النظام. من الأسباب الشائعة: انقطاع التحديث في منتصفه، تلف أحد المرايا، عدم اتساق قاعدة بيانات الحزم، فشل التحقق من التوقيع، تلف dependencies، أو بقاء ملفات lock. المهم هنا ألا تبدأ بحذف cache أو ملفات الإعدادات بشكل عشوائي، بل أن تفهم أولاً ما الجزء الذي تعطل فعلاً.
في بعض الحالات يبدو وكأن مدير الحزم نفسه قد تعطل، بينما تكون المشكلة الحقيقية في الشبكة أو DNS أو إعدادات repository أو نقص المساحة الحرة. لذلك يجب أن تبدأ عملية الفحص بتمييز ما إذا كانت المشكلة في الاتصال، أو في repository، أو في قاعدة البيانات المحلية، أو في dependencies.
الأعراض الشائعة
- تتوقف
apt updateأوdnf updateأوpacman -Syuمع ظهور خطأ - تظهر رسائل عن dependencies غير قابلة للحل أو عن حزم تالفة
- تصبح repository غير قابلة للاستخدام بسبب خطأ GPG أو خطأ في التوقيع
- وجود قفل على قاعدة البيانات يمنع أي عملية على الحزم
- تعيد المرايا أخطاء 404 أو timeout
- بعد انقطاع التحديث، تتوقف عمليات إدارة الحزم عن العمل بشكل طبيعي
- بعد تحديث بعض المكتبات، لا يعود مدير الحزم نفسه قادراً على التشغيل
ما الذي يجب التحقق منه أولاً
أول خطوة هي التأكد مما إذا كانت المشكلة فعلاً في مدير الحزم أم أن السبب في الشبكة أو DNS.
ping -c 4 8.8.8.8
ping -c 4 google.com
ip addr
ip route
إذا كانت الشبكة أو DNS معطلين أصلاً، فقد يبدو الأمر وكأنه عطل في apt أو dnf أو pacman بينما السبب الحقيقي في مكان آخر. أما إذا كانت الشبكة العادية تعمل ولم تتعطل إلا عمليات الحزم، فعندها يجب التركيز على repository، والمفاتيح، وملفات lock، وcache، وقواعد البيانات، وdependencies.
الأسباب المشتركة بين apt / dnf / pacman
1. انقطاع عملية التحديث
من أكثر الأسباب شيوعاً أن تتوقف عملية التحديث في المنتصف. انقطاع الكهرباء، إغلاق الطرفية، انقطاع اتصال SSH أو تجمد الواجهة الرسومية يمكن أن يترك قاعدة بيانات الحزم أو بعض الحزم في حالة غير مكتملة.
في هذه الحالة لا ينبغي البدء بحذف الملفات مباشرة، بل يجب أولاً محاولة إكمال الحالة غير المنتهية بشكل صحيح.
2. بقاء ملفات lock
تستخدم مدراء الحزم آلية lock لمنع تنفيذ أكثر من عملية في الوقت نفسه. فإذا بقيت عملية تحديث أخرى تعمل أو تُرك ملف lock بعد crash، سيظهر لك أن مدير الحزم قيد الاستخدام من عملية أخرى.
لكن لا ينبغي حذف ملف lock بشكل عشوائي. يجب أولاً التأكد من عدم وجود أي عملية مرتبطة ما زالت تعمل.
ps aux | grep -E 'apt|dpkg|dnf|yum|pacman'
3. تلف إعدادات repository
قد تؤدي repositoryات الطرف الثالث، أو PPA قديم، أو mirror لم يعد صالحاً، أو بقايا إعدادات بعد ترقية التوزيعة، إلى جعل مصادر الحزم نفسها غير صالحة. من الأعراض المعتادة هنا أخطاء 404 أو غياب Release file أو فشل جلب metadata.
4. مشاكل مفاتيح GPG أو التوقيع
يتم التحقق من repositoryات الحزم عادةً بطريقة مشفرة. إذا انتهت صلاحية المفتاح، أو لم يتم استيراده، أو تغيرت آلية إدارة المفاتيح، أو تلف keyring المحلي، فسيتوقف مدير الحزم لأسباب أمنية.
5. تلف dependencies
غالباً ما تتلف dependencies عندما يتم فرض تثبيت إصدارات غير متوافقة، أو خلط أكثر من repository، أو تنفيذ تحديثات جزئية، أو استبدال مكتبات النظام يدوياً. ويُعد هذا أكثر خطورة في الأنظمة التي تستخدم pacman، حيث إن partial update غير موصى به بشدة، لكن apt وdnf أيضاً يصبحان غير مستقرين عند خلط المصادر دون ضوابط.
6. تلف cache أو metadata
قد تؤدي الحزم التي تم تنزيلها بشكل غير كامل، أو metadata القديمة، أو قواعد بيانات المزامنة التالفة، إلى فشل قراءة قوائم الحزم أو إتمام عمليات التثبيت.
7. نقص المساحة الحرة
سبب شائع لكنه مهمل أحياناً هو امتلاء المساحة. فإذا كانت أقسام مثل /var أو /boot ممتلئة، فقد تفشل عملية فك الحزم وكتابة الملفات في منتصف الطريق، مما يترك النظام في حالة غير متناسقة.
df -h
du -sh /var/cache/* 2>/dev/null
ما الذي يجب فحصه عندما يتعطل apt
في أنظمة Debian وUbuntu، من المهم ألا تنظر إلى apt فقط، بل أيضاً إلى حالة dpkg الذي يعمل في الطبقة الأدنى.
إصلاح الحزم غير المكتملة الإعداد
sudo dpkg --configure -a
sudo apt --fix-broken install
بعد تحديث متوقف في المنتصف، غالباً ما تكون هاتان الأمران أول وأفضل نقطة بداية.
إعادة تحميل قوائم الحزم
sudo apt update
إذا ظهرت هنا أخطاء 404 أو أخطاء توقيع أو Release file، فيجب مراجعة /etc/apt/sources.list ومحتويات /etc/apt/sources.list.d/.
تنظيف cache
sudo apt clean
sudo apt autoclean
إذا كانت المشكلة في cache التالف أو القديم، فقد يساعد تنظيفه.
ما الذي يجب فحصه عندما يتعطل dnf
في أنظمة Fedora وRHEL، يجب التركيز بشكل خاص على metadata، وسجل المعاملات، وإعدادات repository.
إعادة بناء metadata
sudo dnf clean all
sudo dnf makecache
إذا كانت معلومات mirror أو metadata تالفة، فهذه غالباً خطوة أولى مفيدة.
فحص dependencies وتناسق النظام
sudo dnf check
sudo dnf distro-sync
يساعد ذلك في معرفة ما إذا كان النظام ما زال متوافقاً مع الحالة المتوقعة لحزم التوزيعة.
مراجعة السجل
sudo dnf history
sudo dnf history info last
غالباً ما يوضح السجل من أي تحديث بدأت المشكلة فعلاً.
ما الذي يجب فحصه عندما يتعطل pacman
في Arch Linux، من المهم فحص قواعد مزامنة الحزم، والمفاتيح، والمرايا، وما إذا كانت هناك تحديثات جزئية.
إعادة مزامنة قواعد البيانات
sudo pacman -Syy
إذا لم تعد قاعدة المزامنة المحلية متطابقة مع repository، فهذه خطوة أولى معتادة.
تنفيذ تحديث كامل
sudo pacman -Syu
في Arch يجب تجنب التحديث الجزئي. تحديث بعض الحزم وترك أخرى قديمة من أكثر أسباب عدم الاتساق شيوعاً.
فحص مشاكل المفاتيح
sudo pacman-key --init
sudo pacman-key --populate
إذا كانت المشكلة مرتبطة بالتوقيعات أو keyring، فقد يلزم إعادة تهيئته.
السجلات مهمة جداً
عند حدوث أخطاء في مدير الحزم، لا تكفي قراءة السطر الأخير فقط. وحدها السجلات والمخرجات التفصيلية توضح ما إذا كانت المشكلة في التوقيع أو dependencies أو الشبكة أو قاعدة البيانات.
apt / dpkg
sudo tail -n 100 /var/log/apt/history.log
sudo tail -n 100 /var/log/dpkg.log
dnf
sudo dnf history
sudo journalctl -xe --no-pager | tail -n 100
pacman
sudo tail -n 100 /var/log/pacman.log
ترتيب عملي للفحص
الخطوة 1: فحص الشبكة وDNS
ping -c 4 8.8.8.8
ping -c 4 google.com
الخطوة 2: فحص المساحة الحرة
df -h
الخطوة 3: فحص العمليات وملفات lock
ps aux | grep -E 'apt|dpkg|dnf|yum|pacman'
الخطوة 4: قراءة السجلات
يجب أولاً معرفة أي عملية تحديداً كانت آخر عملية فشلت فعلياً.
الخطوة 5: استخدام أوامر الإصلاح المناسبة للتوزيعة
في أنظمة apt يبدأ الإصلاح عادةً بـ dpkg --configure -a، وفي dnf بتنظيف metadata، وفي pacman بالمزامنة الكاملة وفحص المفاتيح.
أمور لا ينبغي فعلها
- حذف ملفات lock دون فهم السبب
- تثبيت ملفات .deb / .rpm / أو غيرها من مصادر غير موثوقة
- تكرار التحديثات الجزئية في Arch
- الخلط العشوائي بين apt وdpkg أو dnf وrpm أو pacman مع تعديلات يدوية
- تعطيل التحقق من التوقيع دون فهم الخطأ
كيف تتجنب تكرار المشكلة
- تجنب انقطاع الكهرباء أو الإيقاف القسري أثناء التحديث
- لا تضف عدداً كبيراً جداً من repositoryات الطرف الثالث
- أنشئ snapshot أو backup قبل التحديثات الكبيرة
- اتبع أسلوب التحديث الموصى به من التوزيعة
- خصوصاً في Arch، تجنب partial update
الخلاصة
حتى لو بدا أن apt أو dnf أو pacman هو نفسه المعطل، فإن السبب الحقيقي يكون غالباً في الشبكة أو locks أو التوقيعات أو dependencies أو cache أو المساحة الحرة أو إعدادات repository. الأهم هو ألا تتصرف مباشرة بالحذف أو إعادة التثبيت العشوائي، بل أن تفهم أولاً من خلال السجلات في أي طبقة حدث الخلل فعلاً. بعد ذلك، استخدم الطريقة المناسبة لكل عائلة: إصلاح dpkg في أنظمة apt، وفحص metadata والسجل في dnf، والمزامنة الكاملة مع فحص المفاتيح في pacman.