حل مشكل rpmdb: Lock table is out of available locker entries


السلام عليكم

في بعض الأحيان يواجه مدير السيرفر مشكلة ترقية بعد الحزم عن طريق yum ، و يكون المشكل غالبا ناتجا عن الذاكرة و بعض الملفات العالقة . و النتيجة دائما تكون rpmdb: Lock table is out of available locker entries .

ما هو المشكل ؟

المشكل يكون ناتج عن وجود ملفات القاعدة Berkeley معطوبة ، أو ان عملية البحث عند إطلاقها تقوم بانشاء ملف locker و عند القيام بايقاف العملية عن طريق control+c فلا يتم حذف ملف locker و بالتالي يبقى عالقا و لا يتم حذفه .

الحل :

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

yum update php


االخطأ يظهر على الشكل التالي

[justify]Loading "fastestmirror" plugin
rpmdb: Lock table is out of available locker entries
rpmdb: Unknown locker ID: e19
error: db4 error(22) from db->close: Argument invalide
error: cannot open Packages index using db3 - Ne peut allouer de la mémoire (12)
error: cannot open Packages database in /var/lib/rpm
Traceback (most recent call last):
File "/usr/bin/yum", line 29, in ?
yummain.main(sys.argv[1:])
File "/usr/share/yum-cli/yummain.py", line 85, in main
base.getOptionsConfig(args)
File "/usr/share/yum-cli/cli.py", line 163, in getOptionsConfig
disabled_plugins=self.optparser._splitArg(opts.disableplugins))
File "/usr/lib/python2.4/site-packages/yum/__init__.py", line 164, in _getConfig
self._conf = config.readMainConfig(startupconf)
File "/usr/lib/python2.4/site-packages/yum/config.py", line 685, in readMainConfig
yumvars['releasever'] = _getsysver(startupconf.installroot, startupconf.distroverpkg)
File "/usr/lib/python2.4/site-packages/yum/config.py", line 755, in _getsysver
idx = ts.dbMatch('provides', distroverpkg)
TypeError: rpmdb open failed
[/justify]


أولا علينا القيام بإخذ مسخة من ملفات var/lib/rpm ليتم إرجاعها في حالة وقوع مشكل ما .

tar cvzf rpmdb-backup.tar.gz /var/lib/rpm


نقوم بحذف قاعدة البيانات الخاة بالملفات المستخدمة في حزم rbm

rm -rf /var/lib/rpm/__db.00*


إعادة بناء قاعدة البيانات المستخدمة في rpm من جدبد ، العملية قد تاخذ وقت أطول .

rpm --rebuilddb


لنتاكد من ان العملية ناجحة نرى ما هي الحزم الموجودة على النظام

rpm -qa | sort


تحياتي لكم