سؤال غير قادر على قفل دليل الإدارة (/ var / lib / dpkg /) هو عملية أخرى تستخدمها؟


أحصل على هذا الخطأ عند محاولة استخدامه apt-get:

E: Could not get lock /var/lib/dpkg/lock - open (11 Resource temporarily unavailable)
E: Unable to lock the administration directory (/var/lib/dpkg/) is another process using it?  

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


838
2017-11-30 02:12


الأصل


هذا صحيح أيضا إذا قمت بإعادة تشغيل الكمبيوتر؟ ربما بعض موضوع apt القديم هو تأمين الملف ، تحتاج إلى معرفة أي من قتلها أو إعادة التشغيل فقط سوف تفعل ذلك. - Bruno Pereira
هذا الإجراء غالبا ما يصلح هذه المشكلة ، وعندما لا يحدث ذلك ، يكون ناتجها (النص من المحطة) مفيدًا في بعض الأحيان. إذا قررت القيام بذلك ، يمكنك إضافة هذا النص إلى سؤالك. - Eliah Kagan
أود أن أقترح شيئًا آخر قد تلاحظه عند مواجهة هذه المشكلة. تحقق مما إذا كانت محركات الأقراص محمولة. إذا لم تكن كذلك ، فقد لا تتمكن من الحصول على القفل لأن برنامج تثبيت الحزمة لن يتمكن من الوصول إلى نظام الملفات. أتمنى أن يساعدك هذا. :) - Hari
يمكنك استخدام sudo lsof /var/lib/dpkg/lock للعثور على العملية التي تمتلك ملف القفل (إذا كان فارغًا ، افترض أن القفل قد تم تركه من تمهيد سابق ويمكن أن يكون sudo rmد) ، ثم النظر في القيام sudo kill -9 <PID> (احصل على <PID> من lsof انتاج. - waltinator
يمكن أن يكون هذا علامة على أن هناك شيئًا آخر يقوم بتثبيت البرامج أو إزالتها وقام بتأمين قاعدة البيانات apt أثناء قيامه بتنفيذ الإجراءات. - Foreever


الأجوبة:


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

يمكنك حذف ملف القفل باستخدام الأمر التالي:

sudo rm /var/lib/apt/lists/lock

قد تحتاج أيضًا إلى حذف ملف القفل في دليل ذاكرة التخزين المؤقت

sudo rm /var/cache/apt/archives/lock
sudo rm /var/lib/dpkg/lock

بعد ذلك ، حاول فتح Synaptic مرة أخرى.


719
2018-02-07 02:22



حسنا ... ولكن لماذا حدث هذا؟ - Jaime Hablutzel
jaime: ربما تم إيقاف apt-get (أو بعض الواجهة الأمامية لـ GUI) أثناء التنفيذ ، تاركة apt في حالة مقفلة. - bouke
سأقبل هذا كأفضل إجابة. صحيح. - Anwar
AnwarShah لا ، هناك اعتبارات أخرى قبل الذهاب حول إزالة الملفات من النظام. - Braiam
rm / var / lib / dpkg / lock ؛ dpkg --configure -a: - WitchCraft


أرى إلى حد كبير أن جميع الإجابات توصي بحذف القفل. لا أوصي بذلك كإجراء أول ؛ ربما لو لم يكن هناك بديل. يتم وضع القفل عند تشغيل عملية apt ، ويتم إزالته عند اكتمال العملية. إذا كان هناك قفل دون تشغيل عملية ظاهرية ، فقد يعني هذا أن العملية عالقة لسبب ما.

إن جربت

ps aux | grep apt

سيصطاد العمليات التي تحتوي على الكلمة apt، على الأقل. إذا رأيت apt-get عملية أو aptitude العملية التي تبدو عالقة ، يمكنك أن تجرب

kill processnumber

وإذا كان هذا لا يعمل حاول

kill -9 processnumber

هذا يجب أن تقتل العملية ويمكن إزالة القفل. قتل apt أو aptitude عملية غير ضارة ما لم تكن في الواقع في منتصف تركيب الحزمة. على أية حال ، إذا كانت العملية عالقة ، فربما لا يكون لديك خيار سوى قتلها.

قتل dpkg عملية مباشرة ، إن وجدت ، ليست فكرة جيدة ، لأنه إذا dpkg نشط ، ربما يتم التعامل مع قاعدة بيانات الحزمة ، وقد يؤدي قتلها إلى ترك قاعدة بيانات الحزمة في حالة غير متناسقة ؛ بمعنى ، فاسد.

قتل apt-get أو aptitude عملية بشكل عام أكثر أمانا.


550
2017-07-03 09:01



@ لينك لا أعتقد أن القتل dpkg هي فكرة جيدة ، لأن عادة dpkg هو معالجة قاعدة بيانات الحزمة مباشرة ، وقد يتسبب ذلك في حدوث تلف. - Faheem Mitha
إذا كان قتل dpkg يمكن أن يفسد قاعدة البيانات الخاصة به ، فقد تم تصميم dpkg بشكل سيء. فترة. - Jay Sullivan
بالنسبة لي ، أدى ذلك إلى خطأ dpkg was interrupted, you must manually run 'sudo dpkg --configure -a' to correct the problem. عند الجري sudo apt-get dist-upgrade مرة أخرى. تشغيل الأمر ثم حل المشكلة. أنا أحب نيكس! - Wayne Phipps
ملحوظة، killall apt-get يفعل نفس الشيء الخاص بك ps/kill التحرير والسرد. - Cerin
لاحظ أنني وجدت أنني بحاجة إلى تشغيل sudo dkpg --configure -a بعد قتل عملية المارقة من أجل عودة الأمور إلى طبيعتها. - starbeamrainbowlabs


إزالة الخاص بك /var/lib/dpkg/lock ملف وإعادة فرض حزمة الإصلاح.

sudo rm /var/lib/dpkg/lock
sudo dpkg --configure -a

يجب أن تعمل بعد هذا.


175
2018-01-29 11:27



ساعدت هذه الأوامر ، ولكن الآن عندما حاولت تثبيت مرة أخرى ، حصلت على هذا الرد: لا يمكن الحصول على قفل / فار / ذاكرة التخزين المؤقت / ملائمة / المحفوظات / قفل - مفتوحة. أعتقد أنني يجب أن أفعل مثل مشكلة إلغاء القفل السابقة ، لكن من فضلك أخبرني بالكلمات الرئيسية المحددة للأمر. أنا مبتدئ مطلق - kern
sudo - تنفيذ الأمر كجذر ، rm - إزالة الملف. ربما حاول sudo rm /var/cache/apt/archives/lock - kubahaha
هذا ليس اقتراح جيد: إزالة عمياء الحظ قد يفسد حالة dpkg. - poolie
لماذا لن تصلح نفسها في الوقت الحاضر؟ - Marian Klühspies
هذا العمل بالنسبة لي. لم aws أعلاه. - 1rq3fea324wre


ستحصل على هذه الرسالة إذا نسيت استخدامها sudo عند تنفيذ أمر apt.

وإلا ، فهذه علامة على أن هناك شيئًا آخر يقوم بتثبيت البرامج أو إزالتها وقفل قاعدة البيانات apt أثناء قيامه بتنفيذ الإجراءات. البرامج التي يمكنها القيام بذلك هي:

  • مركز البرامج
  • مدير التحديث
  • المثبت apt link (أعتقد أن هذا يمر الآن عبر SC)
  • الأدوات المساعدة لسطر الأوامر apt-get أو aptitude.
  • مدير الحزم Synaptic

هام: لا تجرِّب سوى استخدام الحل التالي كحل أخير نظرًا لأنه قد يؤدي إلى تعطل النظام. أول محاولة قتل أي مثيل apt أو aptitude كما هو موضح في جواب فهيم.

يمكنك إجبار القفل عن طريق إزالة الملف ، ولكن لا يوصى بذلك دون إغلاق البرنامج الذي يحمل القفل بأمان، لأنك يمكن أن تسبب الفساد أو مقاطعة التثبيت (سيئة). يجب أن يقوم الأمر المقدم من João بإغلاق البرنامج الذي يحمل القفل ثم إزالة القفل ولكن لن يحميك من انقطاع التثبيت:

sudo fuser -cuk /var/lib/dpkg/lock; sudo rm -f /var/lib/dpkg/lock   

ويمكن استخدام نفس الأمر لقفل ذاكرة التخزين المؤقت apt:

sudo fuser -cuk /var/cache/apt/archives/lock; sudo rm -f /var/cache/apt/archives/lock

97
2017-11-30 02:17



كنت أقوم بتحديث برنامجي عندما تلقيت رسالة الخطأ. - raindrop
هذا تحطمت بالنسبة لي ، - umpirsky
sudo fuser -cuk /var/cache/apt/archives/lock إعادة تشغيل جهاز الكمبيوتر الخاص بي مباشرة. apt-get غير مقفلة الآن. - Maxime R.
هذا تعطل خادم بلدي بأكمله. - 에이바
قتل apt أو dpkg في منتصف الطريق ليس فكرة عظيمة. - poolie


والطريقة الأكثر احتمالا لضرب هذا هو:

  • التمهيد أوبونتو
  • بدء محطة
  • اكتب sudo apt-get install whatever

وخط القيادة apt يتداخل مع update-manager الاقتراع تلقائيا.

لذلك ، إذا حاولت مرة أخرى في غضون بضع دقائق ، فيجب إصلاحها.


67
2017-11-30 03:08



تلميح عظيم على النقيض من نصف دزينة الردود التي تشير إلى مجرد إزالة الملف ؛-) ركضت عشوائيا في القضية وعلى الأرجح هذا هو! - Alex
آمن بما فيه الكفاية ، اضطر إلى الانتظار قليلاً من قبل sudo apt-get install يمكن أن تعمل. - sargas
حسنا هذا لا يعمل دائما ، نعم لقد استخدمت إعادة التشغيل عدة مرات. إذا لم يكن مناسبًا ، فجرّب هذا askubuntu.com/a/315791/378845 قبل أن تقوم بإزالة الأقفال - Menuka Ishan
menuka ، لماذا لا ندعه ينتهي. - poolie
poolie لأن هناك قيود أخرى التي تمنع العملية من الانتهاء - Menuka Ishan


يمكن لبرنامج واحد فقط الإمساك بالقفل. تأكد من أنك لا تقوم بتشغيل aptitude أو synaptic أو بارعون. إغلاق البرنامج وتشغيله مرة أخرى يجب أن يعمل. قد يكون لديك إما متشابك مفتوح ، أو أن يكون لديك نافذة طرفية أخرى مفتوحة تعمل apt-get ، أو لديك مدير التحديث قيد التشغيل.تحقق من ذلك ومعرفة ما إذا كان أي من تلك تعمل ، إن وجدت يتم تشغيله بالقرب منه وحاول مرة أخرى.

جرب هذا الأمر في المحطة لإيجاد ما هو قيد التشغيل

ps -e | grep -e apt -e adept | grep -v grep

ملحوظة:
إذا كان هذا لا يطبع أي شيء ، فاكتب ما يلي في الجهاز الطرفي لإزالة القفل

sudo rm /var/lib/dpkg/lock    
sudo rm /var/cache/apt/archives/lock

الآن يمكنك تثبيت أي حزم.


48
2017-11-30 04:55



إن حذف ملف القفل هو ، ما أراه ، أمر خطير يجب القيام به. إذا تم قفل عملية أخرى لسبب وجيه - وقمت بإزالة ملف القفل هذا وفرض التثبيت مع ما كنت تفعله مسبقًا - فيمكن أن تؤثر بجدية ، بطريقة سلبية ، على النظام الخاص بك. - Marco Ceppi♦
هذا هو السبب في أنني قد أعطيت ذلك في Note.If فشل كل ما سبق هو السبيل الوحيد لإزالة lock.It لن يسبب أي مشكلة طالما لا يتم تشغيل dpkg وعمليات apt-get / aptitude - karthick87
pgrep -f 'apt|adept|dpkg' هو أقصر كثيرا. - Barry
شكرًا! هذا يعمل. pgrep -f 'apt | adept | dpkg' ومن ثم مهارة sudo (العدد) ، أقتل كل رقم ثم قم بتثبيت الأعمال! - creator


حتى الآن ، فإن أفضل طريقة للحصول عليه تعمل دون كسر الخلفية المحتملة للتثبيت (كما يمكن أن يحدث عن طريق إزالة ملف القفل) ، هو إيقاف الخدمة باستخدام apt:

خطأ:

# sudo apt-get upgrade
E: Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavailable)
E: Unable to lock the administration directory (/var/lib/dpkg/), is another process using it?`

حل:

sudo systemctl stop apt-daily.timer

بعد ترقية النظام ، أقترح إعادة تمكينه ، حيث يمكن إصلاح الخطأ أثناء التثبيت من خلال الترقية.

sudo systemctl start apt-daily.timer 

لم أتحقق من إصلاح هذا الخطأ بعد الترقية. سأضيف تعليقًا جديدًا عند التحقق من ذلك


35
2018-02-02 10:01



بعد ترقية النظام وبدء خدمة apt-daily.timer مرة أخرى ، لا أواجه هذه المشكلة حتى الآن. - Jairelee
هذا حل مشكلتي ، شكرا لك. - inkredibl
ربما تكون هذه هي الطريقة الأنظف مقارنةً بجميع الإجابات الأعلى تصويتًا المذكورة أعلاه. انها عملت في حالتي لا تشوبه شائبة ، شكرا لك! - CygnusX1
هذا عمل لا تشوبه شائبة على 17.10 كذلك - Elder Geek
تعمل بشكل جيد في 18.04. :) - Naveen Kumar V


بادئ ذي بدء ، يجب علينا التحقق من العملية التي تم إنشاؤها باستخدام ملف القفل lsof:

sudo lsof /var/lib/dpkg/lock

أو في حالة أخرى حيث /var/lib/apt/lists/lock إشكالية:

sudo lsof /var/lib/apt/lists/lock

سيكون الناتج قريبًا من شيء مثل:

COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF    NODE NAME
apt-get   12127 root   4uW  REG  252,1        0    86   /var/lib/apt/lists/lock

ثم يجب أن نتحقق مما تقوم به الوصلة ، يمكننا العثور عليه باستخدامه ps، pgrep إلخ؛ الأمر هو apt-get لذلك أنا أركض:

pgrep apt-get -a

ال -a التبديل يسرد الأمر الكامل بالنسبة لي ، في حالتي هو:

 pgrep -a apt-get
 12127 apt-get update

يمكننا أن نرى أنه يعمل update subcommand ، يمكنني تشغيل شيء كهذا أيضًا:

ps -f 12127

التي تنتج:

UID        PID  PPID  C STIME TTY      STAT   TIME CMD
root     12127 12126  0 09:39 pts/0    S+     0:00 apt-get update

في هذه الحالة ، سأنتظر بعض الوقت حتى يتم تحرير المورد وإذا بقيت المشكلة بعد 2 أو 3 دقائق أو كان الأمر لا يهمني أو لم يكن ضارًا بالنظام (مثل هذا apt-get update) أبعث SIGTERM لهذه العملية:

sudo kill -15 12127

يجب أن تقوم بالعمل ، إذا لم أكن سأرسله SIGINT هذه المرة (إنها مثل الضغط CTRL+C):

sudo kill -2 12127

إذا لم تعمل أيضًا ، يجب أن نرسل SIGHUP (kill -1) ، وأخيرًا إذا لم ينجح شيء ، فأنا ببساطة أقتل العملية:

sudo kill -9 12127

أو

sudo pkill -9 apt-get

ثم أقوم بإزالة الموارد المشغولة:

sudo rm /var/lib/apt/lists/lock

25
2018-04-24 07:29



شيء واحد صغير هو ذلك /var/lib/dpkg/lock بدلا من /var/lib/apt/lists/lock هو الملف في السؤال. - Chai T. Rex
@ ChaiT.Rex شكرا ، قام بتحديث ؛) - Ravexina
أشكر الآلهة الجذر الذي يذكره أحدهم أخيراً pgrep و pkill. - Barry
يجب أن يكون هذا هو الجواب المقبول. - Marwan Nabil


سيحدث ذلك إذا كان لديك "مدير التحديث" يعمل بشكل متوازٍ لأي فحص أو تثبيت للتثبيت كأماكن لعملية التثبيت. إذا كنت تواجه نفس الخطأ دون تشغيل "مدير التحديث" ، فيجب عليك إزالته منه /var/lib/dgkg/lock، والتي بالتأكيد لا يمكنك القيام بذلك يدويا

sudo fuser -cuk /var/lib/dpkg/lock
sudo rm -f /var/lib/dpkg/lock

يعمل بشكل جيد. مأخوذ من: https://askubuntu.com/a/15469/68707


18
2018-06-06 07:17



كانت هذه هي المشكلة في حالتي! - LondonRob
حل أفضل منذ استخدام أمر fuser لتعقب عملية أخرى (إذا كان لا يزال على قيد الحياة) - Lars Nordin