اخیراً سعی داشتم برنامه ای را با استفاده از دستور apt برروی اوبونتو نصب کنم؛ که با خطای زیر برخورد کردم:
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?
در این مقاله میخواهیم به دلایل به وجود آمدن این مشکل و نحوه حل آن بپردازیم.
ممکن است شما به خطاهای مشابهی نیز برخورد کرده باشید؛ همانند:
E: Could not get lock /var/lib/apt/lists/lock – open (11: Resource temporarily unavailable)
E: Unable to lock directory /var/lib/apt/lists/
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?
هر دوی این خطاها، بسیار شبیه به یک خطای رایج دیگر مربوط به اوبونتو می باشند: Unable to lock directory /var/cache/apt/archives
و نکته جالب این است؛ که رفع این خطاها نیز مشابه هستند.
رفع خطای “Unable to lock the administration directory (/var/lib/dpkg/)”
روش ۱:
دلایل زیادی می تواند برای مشاهده این خطا وجود داشته باشد. اولین و واضح ترین دلیل این است که برخی از فرایندهای دیگر از ابزار مدیریت بسته APT (به عبارت دیگر دستور apt یا apt-get) استفاده می کنند. بنابراین، باید بررسی کنید آیا مرکز نرم افزار اوبونتو یا ابزار مدیریت بسته گرافیکی Synaptic در حال اجرا است یا خیر؛ شما همچنین می توانید، از خط فرمان لینوکس برای پیدا کردن و متوقف نمودن آن فرایند (پروسس) استفاده کنید. برای انجام این کار، از دستور زیر استفاده کنید:
ps aux | grep -i apt
این دستور، به شما شناسه فرایند(پروسس) اجرا کننده apt یا apt-get را نشان می دهد. در مثال زیر، شناسه فرآیند 7343 است. شما می توانید آخرین خط حاوی 'grep – colour = auto' را نادیده بگیرید.
شما می توانید از شناسه فرآیند(پروسس) برای متوقف کردن آن استفاده کنید: (به جای عبارت process id، شماره پروسس مورد نظر را قرار دهید.)
sudo kill -9 <process id>
به عنوان مثال، برای متوقف کردن پروسس "sudo apt update" در تصویر بالا، عبارت زیر را وارد میکنیم:
sudo kill -9 13290
راه دیگر و البته آسان تر، استفاده از دستور killall خواهد بود. این دستور، تمام برنامه های اجرا کننده را متوقف می نماید:
sudo killall apt apt-get
روش ۲:
روش اول در اکثر موارد مشکل را برای شما حل می کند. اما مسئله ی من کمی متفاوت بود. من، در حال بروزرسانی سیستم خود بودم که به طور تصادفی ترمینال را بستم. به همین دلیل، هیچ فرآیندی در حال اجرای apt نبود، اما باز هم این خطا را به من نشان داد.
در این مورد، علت اصلی فایل قفل است. پرونده های قفل برای جلوگیری از استفاده از داده های یکسان توسط دو یا چند فرآیند استفاده می شود. وقتی دستورات apt اجرا می شوند، آنها در برخی از مکان ها فایل های قفل ایجاد می کنند. اگر دستور apt قبلی به درستی خاتمه نیافته باشد، فایل های قفل حذف نشده و بنابراین از اجرای هرگونه از دستورات apt/apt-get جلوگیری می کنند و شما دیگر قادر نیستید دستور دیگری اجرا کنید.
برای حل کردن این مشکل، تنها کاری که باید انجام دهید، حذف فایل های قفل است. اما قبل از انجام این کار، بهتر است، هر فرآیندی که از فایل های قفل استفاده می کند را متوقف نمایید.
از دستور lsof برای دریافت شناسه فرایند دارنده ی فایل های قفل استفاده کنید. این دستورات را یک به یک اجرا کنید:
lsof /var/lib/dpkg/lock
lsof /var/lib/apt/lists/lock
lsof /var/cache/apt/archives/lock
این امکان وجود دارد که دستورات، هیچ خروجی ای برنگردانند، یا تنها یک شماره برگردانند. اگر آن ها حداقل یک عدد برگرداندند، از عدد(ها) استفاده کرده و بدین صورت فرآیندها را متوقف نمایید (PID را با شماره هایی که از دستورات فوق به دست آورده اید، جایگزین کنید):
sudo kill -9 PID
اکنون می توانید با استفاده از دستورات زیر، فایل های قفل را بصورت ایمن، حذف کنید:
sudo rm /var/lib/apt/lists/lock
sudo rm /var/cache/apt/archives/lock
sudo rm /var/lib/dpkg/lock
پس از آن بسته ها را مجددا پیکربندی نمایید:
sudo dpkg --configure -a
حال اگر دستور به sudo apt update را اجرا کنید، همه چیز باید درست باشد.
عیب یابی: “dpkg: error: dpkg frontend is locked by another process”
اگر هنگام اجرای روش شرح داده شده، خطای “dpkg frontend is locked by another process” را مشاهده کردید، باید یک مرحله اضافه تری را انجام دهید.
ابتدا، شناسه فرآیند دارنده ی فایل قفل را بیابید.
lsof /var/lib/dpkg/lock-frontend
دستور فوق، PID فرایندهای استفاده کننده از فایل های قفل را به شما می دهد. از این PID برای متوقف کردن فرآیند استفاده کنید.
sudo kill -9 PID
اکنون می توانید قفل را حذف کرده و dpkg را مجددا پیکربندی نمایید:
sudo rm /var/lib/dpkg/lock-frontend
sudo dpkg --configure -a
امیدواریم این مقاله به حل مشکل E: Could not get lock /var/lib/dpkg/lock در سیستم اوبونتوی شما کمک کرده باشد؛ مثل همیشه، اگر سوال، پیشنهاد، یا انتقادی دارید، خوشحال میشویم آنها را بشنویم.
منبع: این
nahid@nahid-MS-7721:~$ sudo apt install vlc
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package vlc
2
nahid@nahid-MS-7721:~$ sudo apt-get install vlc
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package vlc
3
nahid@nahid-MS-7721:~/Downloads$ sudo dpkg -i google-chrome-stable_current_amd64.deb
Selecting previously unselected package google-chrome-stable.
(Reading database ... 164887 files and directories currently installed.)
Preparing to unpack google-chrome-stable_current_amd64.deb ...
Unpacking google-chrome-stable (87.0.4280.141-1) ...
dpkg: dependency problems prevent configuration of google-chrome-stable:
google-chrome-stable depends on libnss3 (>= 2:3.22); however:
Version of libnss3:amd64 on system is 2:3.17.1-0ubuntu1.
dpkg: error processing package google-chrome-stable (--install):
dependency problems - leaving unconfigured
Processing triggers for gnome-menus (3.10.1-0ubuntu2) ...
Processing triggers for desktop-file-utils (0.22-1ubuntu2) ...
Processing triggers for bamfdaemon (0.5.1+14.10.20140925-0ubuntu1) ...
Rebuilding /usr/share/applications/bamf-2.index...
Processing triggers for mime-support (3.55ubuntu1) ...
Processing triggers for man-db (2.7.0.2-2) ...
Errors were encountered while processing:
google-chrome-stable
با ا\دیت کردن apt هم درست نشد
ممنون میشم کمک کنید واقعا مشکل دارم
شما نیاز دارید تا مخزن universe رو به لیست مخازن اضافه کنید.
برای این منظور از دستور:
sudo add-apt-repository universe
را اجرا کنید.
سپس دستور
sudo apt update
را اجرا کنید تا لیست مخازن بروز شود.
سپس مجددا دستور نصب vlc را اجرا کنید.
برای حل مشکل نصب گوگل کروم هم بعد از طی کردن مراحل بالا، این دستور رو اجرا کنید:
sudo apt-get install libgconf2-4 libnss3-1d libxss1
سپس مجددا دستوری که برای نصب google-chrome اجرا کردید رو اجرا بفرمایید.
در صورتی که سوالی داشتید و یا با مشکلی در این خصوص مواجه شدید، میتونید با ایمیل hosni [at] jeyserver.com در ارتباط باشید.