dpkg: ত্রুটি: dpkg স্থিতি ডাটাবেস অন্য প্রক্রিয়া দ্বারা লক করা আছে


68

আমি কেবল ভাবলাম যদি কেউ আমাকে বলতে পারে তবে এর অর্থ কী:

E: dpkg was interrupted, you must manually run 'sudo dpkg --configure -a' to correct the problem.
reidsr@ubuntu:~$ sudo dpkg --configure -a
dpkg: error: dpkg status database is locked by another process
reidsr@ubuntu:~$ 

আমি কীভাবে চালাব sudo dpkg --configure -a ?


এই মেশিনটি কি গুরুত্বপূর্ণ, আপনি কি এটি পুনরায় চালু করতে পারবেন? এই আসল তাত্ক্ষণিক সমাধান করা উচিত
Huckle

উত্তর:


94

প্রথম রান:

lsof /var/lib/dpkg/lock

তারপরে নিশ্চিত হয়ে নিন যে প্রক্রিয়াটি চলছে না:

ps cax | grep PID

যদি এটি চলছে:

kill PID
#wait
kill -9 PID

নিশ্চিত হয়ে নিন যে প্রক্রিয়াটি সম্পন্ন হয়েছে:

ps cax | grep PID

তারপরে লক ফাইলটি সরান:

sudo rm /var/lib/dpkg/lock

Dpkg নিজেই ঠিক করুন:

sudo dpkg --configure -a

আপনার পরে ভাল হতে হবে :)


7
ম্যানুয়ালি লকফিলগুলি কখনই অপসারণ করা উচিত নয়। তারা একটি কারণে সেখানে আছে। দয়া করে, এটি কেবলমাত্র একটি খুব শেষ অবলম্বন হিসাবে ব্যবহার করুন। প্যাকেজ পরিচালনা ব্যবহার করে প্রথমে অন্যান্য অ্যাপ্লিকেশন সনাক্ত এবং বন্ধ করার চেষ্টা করুন।
জার্মটভিডিজক

8
আসলে যদি লক ফাইলটি ব্যবহার করে এমন কোনও প্রক্রিয়া থাকে তবে কেবলমাত্র লক ফাইলটি সরিয়ে না দেওয়ার চেয়ে সম্ভবত সেই প্রক্রিয়াটি মেরে ফেলা ভাল। আপনার সাথে প্রক্রিয়াটি সন্ধান করা উচিত lsof /var/lib/dpkg/lock
আবে ভোলেকার

আবের মন্তব্যের জন্য একটি শক্তিশালী +1। এটির জন্য খোলা ফাইল বর্ণনাকারী সমস্ত প্রক্রিয়া না মেরে কোনও লকফিল কখনই সরিয়ে ফেলবেন না।
পুয়ান খোসরভি

1
@ Xen2050 IMO একটি নতুন উত্তর অপ্রয়োজনীয় বিশৃঙ্খলা যুক্ত করে। আপনি যদি ভাবেন যে কোনও বাশ স্ক্রিপ্ট যা একই জিনিসটি স্বয়ংক্রিয়ভাবে করে তোলে আমি এটি অন্য উত্তর হিসাবে লিখব।
পুয়ান খোসরভি

1
এখন যেমন দাঁড়িয়ে আছে, এটি অবশ্যই সেরা উত্তর is হ্যাঁ, কোনও চলমান প্রক্রিয়া লকটির মালিক নয় তা নিশ্চিত করা খুব গুরুত্বপূর্ণ। আমি ইতিমধ্যে এটি যাচাই করেছি, কিছুই চলছিল না, এবং পুরানো লকটি কীভাবে মুছতে হয় তা আমার জানতে হবে। এই উত্তরটি সমস্ত ঘাঁটি জুড়ে।
ল্যামবার্ট

9

আপনি একই সাথে একাধিক প্যাকেজ অ্যাপ্লিকেশন / কমান্ড / সরঞ্জাম পরিচালনা করতে পারবেন না। কখনও কখনও, এর অর্থ ব্যাকগ্রাউন্ডে সিনাপটিক, এপটি-গেট বা প্যাকেজ আপডেট সরঞ্জাম চলছে। অন্যান্য প্যাকেজ সরঞ্জামগুলি বন্ধ করুন, বা সেগুলি শেষ হওয়ার জন্য অপেক্ষা করুন। এবং dpkg চলবে।


8

যে কেউ চেষ্টা করতে পারেন:

sudo apt-get install -f

যে কোনও ভাঙা প্যাকেজ ঠিক করতে:

ত্রুটিমুক্ত; জায়গায় ভাঙ্গা নির্ভরতা সহ একটি সিস্টেম সংশোধন করার চেষ্টা করুন। এই বিকল্পটি, ইনস্টল / অপসারণের সাথে ব্যবহৃত হলে, সম্ভাব্য সমাধানটি কেটে নেওয়ার জন্য কোনও প্যাকেজ বাদ দিতে পারে AP যদি প্যাকেজগুলি নির্দিষ্ট করা থাকে তবে এগুলি সমস্যাটিকে পুরোপুরি সংশোধন করতে হবে। প্রথমবারের মতো এপিটি চালানোর সময় বিকল্পটি কখনও কখনও প্রয়োজনীয় হয়; এপিটি নিজেই কোনও সিস্টেমে ভাঙা প্যাকেজ নির্ভরতা থাকতে দেয় না। ম্যানুয়াল হস্তক্ষেপের প্রয়োজন হিসাবে এটির কোনও সিস্টেমের নির্ভরতা কাঠামো এতটাই দূষিত হতে পারে (যার অর্থ সাধারণত কিছু আপত্তিজনক প্যাকেজ ব্যবহার করা dselect(1)বা dpkg --removeমুছে ফেলা)। -M এর সাথে এই বিকল্পের ব্যবহার কিছু পরিস্থিতিতে ত্রুটি তৈরি করতে পারে produce কনফিগারেশন আইটেম: এপিটি :: পান :: ফিক্স-ব্রোকেন।



1

একটি পন্থা কেবল পিসি পুনরায় চালু করার জন্য। এটি আমার পক্ষে কাজ করেছে।


0

এটি হতে পারে যদি আপগ্রেড প্রক্রিয়াটি বাধাগ্রস্ত হয় (যেমন আপনি সংযোগটি হারিয়ে ফেলেছিলেন)। sudo suসেশনে ফিরে যাওয়ার জন্য আপনি স্ক্রিনটিকে রুট ( ) হিসাবে ব্যবহার করে দেখতে পারেন ।

screen -r

0

এখানে কিছু ভাল উত্তর রয়েছে, তবে কেবল dpkg লক ব্যবহারকারীর সন্ধান করার জন্য একটি নন-লসফ পদ্ধতি যুক্ত করতে চেয়েছিলেন

পদক্ষেপ 1: ডিপি কেজি কে লক করছে তা সন্ধান করুন:

বিকল্প # 1: lsof ব্যবহার (সর্বদা মেশিনে ইনস্টল করা হয় না)

lsof /var/lib/dpkg/lock

বিকল্প # 2: ব্যাশ ব্যবহার করে

for pid in $(ls /proc | egrep [0-9]+); do sudo ls -l /proc/$pid/fd 2>/dev/null | grep /var/lib/dpkg/lock && echo $pid; done

পদক্ষেপ 2: বর্তমান dpkg ব্যবহারকারীর সাথে আপনি কী করতে চান তা স্থির করুন

যদি এরকম কোনও প্রক্রিয়া না থাকে তবে সিদ্ধান্ত নেওয়ার মতো কিছুই নেই, কেবল পরবর্তী পদক্ষেপে যান।

অন্যথায়, আপনি প্রক্রিয়াটি হত্যা করতে চান বা এটি দুর্দান্তভাবে শেষ করতে চান কিনা তা আপনাকে সিদ্ধান্ত নিতে হবে। আপনি যদি এটি হত্যা করার সিদ্ধান্ত নেন তবে কেবল ব্যবহার করুন kill <pid>। যদি প্রক্রিয়াটি এখনও মরে না যায়, তবে আপনি এটি ব্যবহার করে হত্যাটি বিবেচনা করতে পারেন kill -9 <pid>তবে এটি কিছু অসঙ্গতি সৃষ্টি করতে পারে এবং আপনি কী করছেন তা না জানলে আমি এর বিরুদ্ধে পরামর্শ দিচ্ছি।

পদক্ষেপ 3: লক ফাইলটি সরান

sudo rm /var/lib/dpkg/lock

পদক্ষেপ 4: dpkg অভ্যন্তরীণ স্থির করুন

sudo dpkg --configure -a


0

আমাদের ক্ষেত্রে কোনও চলমান প্রক্রিয়া (পিআইডি) ছিল না তাই আমি হার্ড-স্টপ করে ভিপিএস রিবুট করেছিলাম।

এর পরে, বেশ কয়েকটি লক ফাইল রয়েছে যা মুছে ফেলার দরকার হতে পারে:

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

তারপরে আপনি dpkgপ্রস্তাবিত হিসাবে ঠিক করতে পারেন :

sudo apt update
sudo dpkg --configure -a
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.