ແກ້ໄຂ "ບໍ່ສາມາດລັອກໄດເລກະທໍລີການບໍລິຫານ (/ var/lib/dpkg /)" ໃນ Ubuntu


ໃນຂະນະທີ່ ນຳ ໃຊ້ເຄື່ອງມືຄຸ້ມຄອງແພັກເກດ APT ໃນ Ubuntu Linux ຫລືເຄື່ອງມືອະນຸພັນຂອງມັນເຊັ່ນ Linux Mint (ທີ່ຂ້ອຍໃຊ້ເປັນລະບົບປະຕິບັດການຫລັກຂອງຂ້ອຍ ສຳ ລັບເຮັດວຽກປະ ຈຳ ວັນ), ທ່ານອາດຈະພົບຂໍ້ຜິດພາດ - "ບໍ່ສາມາດລັອກໄດເລກະທໍລີການບໍລິຫານ (/ var/lib/dpkg /) ແມ່ນອີກຂັ້ນຕອນ ໜຶ່ງ ທີ່ໃຊ້ມັນ” ຢູ່ໃນເສັ້ນ ຄຳ ສັ່ງ.

ຂໍ້ຜິດພາດນີ້ສາມາດເປັນສິ່ງທີ່ ໜ້າ ຮໍາຄານໂດຍສະເພາະ ສຳ ລັບຜູ້ໃຊ້ Linux (Ubuntu) ຄົນ ໃໝ່ ທີ່ອາດຈະບໍ່ຮູ້ສາເຫດຂອງຄວາມຜິດແທ້.

ຂ້າງລຸ່ມນີ້ແມ່ນຕົວຢ່າງ, ສະແດງຂໍ້ຜິດພາດຂອງແຟ້ມລັອກໃນ Ubuntu 16.10:

[email :~$ sudo apt install neofetch
[sudo] password for tecmint:
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?

ເຈົ້າຈະແກ້ໄຂຂໍ້ຜິດພາດຂ້າງເທິງນີ້ໄດ້ແນວໃດໃນກໍລະນີທີ່ເຈົ້າຈະລົ້ມເຫລວໃນອະນາຄົດ? ມັນມີຫລາຍວິທີໃນການຈັດການກັບຂໍ້ຜິດພາດນີ້, ແຕ່ໃນຄູ່ມືນີ້, ພວກເຮົາຈະຜ່ານສອງວິທີທີ່ງ່າຍທີ່ສຸດແລະອາດຈະເປັນວິທີການທີ່ມີປະສິດຕິຜົນທີ່ສຸດໃນການແກ້ໄຂ.

1. ຊອກຫາແລະຂ້າທຸກຂະບວນການທີ່ ເໝາະ ສົມຫລື ເໝາະ ສົມ

ດໍາເນີນການຄໍາສັ່ງຂ້າງລຸ່ມນີ້ເພື່ອ grep ຄໍາສັ່ງພ້ອມດ້ວຍທໍ່.

$ ps -A | grep apt

ສຳ ລັບແຕ່ລະຂະບວນການ apt-get ຫຼື apt ທີ່ທ່ານສາມາດເຫັນໃນຜົນຜະລິດຂອງ ຄຳ ສັ່ງຂ້າງເທິງ, ຂ້າແຕ່ລະຂະບວນການໂດຍໃຊ້ ຄຳ ສັ່ງຂ້າງລຸ່ມ.

ID ຂອງຂະບວນການ (PID) ແມ່ນພົບຢູ່ໃນຖັນ ທຳ ອິດຈາກພາບ ໜ້າ ຈໍຂ້າງເທິງ.

$ sudo kill -9 processnumber
OR
$ sudo kill -SIGKILL processnumber

ຍົກຕົວຢ່າງ, ໃນ ຄຳ ສັ່ງຂ້າງລຸ່ມນີ້ບ່ອນທີ່ 9 ແມ່ນ ໝາຍ ເລກ ສຳ ລັບສັນຍານ SIGKILL, ຈະຂ້າຂະບວນການທີ່ ເໝາະ ສົມ ທຳ ອິດ:

$ sudo kill -9 13431
OR
$ sudo kill -SIGKILL 13431

2. ລົບໄຟລ໌ລັອກ

ແຟ້ມລັອກພຽງແຕ່ປ້ອງກັນການເຂົ້າເຖິງເອກະສານອື່ນຫລືບາງຂໍ້ມູນໃນລະບົບ Linux ຂອງທ່ານ, ແນວຄິດນີ້ມີຢູ່ໃນ Windows ແລະລະບົບປະຕິບັດການອື່ນໆເຊັ່ນກັນ.

ເມື່ອທ່ານໃຊ້ ຄຳ ສັ່ງ apt-get ຫຼື apt, ແຟ້ມລັອກຖືກສ້າງຂື້ນພາຍໃຕ້ບັນດາໄດເລກະທໍລີໃດໆ/var/lib/apt/list /,/var/lib/dpkg/ແລະ/var/cache/apt/archives /.

ສິ່ງນີ້ຊ່ວຍໃຫ້ຫລີກລ້ຽງຈາກຂະບວນການ apt-get ຫຼື apt ທີ່ ກຳ ລັງແລ່ນຢູ່ແລ້ວຈາກການຖືກລົບກວນໂດຍຜູ້ໃຊ້ຫຼືລະບົບອື່ນໆທີ່ຕ້ອງການເຮັດວຽກກັບແຟ້ມທີ່ຖືກໃຊ້ໂດຍ apt-get ຫຼື apt. ເມື່ອຂັ້ນຕອນການປະຕິບັດ ສຳ ເລັດແລ້ວ, ໄຟລ໌ລັອກຈະຖືກລຶບອອກ.

ສິ່ງ ສຳ ຄັນ: ໃນກໍລະນີທີ່ມີການລັອກຢູ່ໃນສອງລາຍການຂ້າງເທິງໂດຍບໍ່ມີການແຈ້ງເຕືອນຫລືການເຮັດວຽກທີ່ ເໝາະ ສົມ, ມັນອາດຈະ ໝາຍ ຄວາມວ່າຂັ້ນຕອນດັ່ງກ່າວຖືກຈັດຂື້ນດ້ວຍເຫດຜົນ ໜຶ່ງ ຫຼືອີກຢ່າງ ໜຶ່ງ, ດັ່ງນັ້ນທ່ານ ຈຳ ເປັນຕ້ອງລຶບແຟ້ມລັອກເພື່ອທີ່ຈະ ລ້າງຄວາມຜິດພາດ.

ທຳ ອິດປະຕິບັດ ຄຳ ສັ່ງຢູ່ທາງລຸ່ມເພື່ອ ກຳ ຈັດແຟ້ມລັອກຢູ່ໃນລະບົບ /var/lib/dpkg/:

$ sudo rm /var/lib/dpkg/lock

ຫລັງຈາກນັ້ນບັງຄັບໃຫ້ຊຸດເພື່ອປັບໂຄງສ້າງ ໃໝ່ ດັ່ງນີ້:

$ sudo dpkg --configure -a

ອີກທາງເລືອກ, ລຶບໄຟລ໌ລັອກຢູ່ໃນລະຫັດ /var/lib/apt/lists/ ແລະ cache ໃນຂ້າງລຸ່ມນີ້:

$ sudo rm /var/lib/apt/lists/lock
$ sudo rm /var/cache/apt/archives/lock

ຕໍ່ໄປ, ປັບປຸງລາຍຊື່ແຫລ່ງແພັກເກດຂອງທ່ານດັ່ງຕໍ່ໄປນີ້:

$ sudo apt update
OR
$ sudo apt-get update

ສະຫລຸບລວມແລ້ວ, ພວກເຮົາໄດ້ຍ່າງຜ່ານສອງວິທີການທີ່ ສຳ ຄັນເພື່ອຈັດການກັບບັນຫາທົ່ວໄປທີ່ຜູ້ ນຳ ໃຊ້ Ubuntu (ແລະອະນຸພັນຂອງມັນ) ນຳ ໃຊ້, ໃນຂະນະທີ່ ກຳ ລັງໃຊ້ງານ apt-get ຫລື apt ພ້ອມທັງ ຄຳ ສັ່ງດ້ານທັກສະ.

ທ່ານມີວິທີການອື່ນໃດທີ່ ໜ້າ ເຊື່ອຖືເພື່ອແລກປ່ຽນຄວາມ ໝາຍ ສຳ ລັບການຈັດການກັບຄວາມຜິດພາດທົ່ວໄປນີ້ບໍ? ແລ້ວຕິດຕໍ່ຫາພວກເຮົາໂດຍຜ່ານແບບຟອມ ຄຳ ເຫັນຂ້າງລຸ່ມນີ້.

ນອກຈາກນັ້ນ, ທ່ານອາດຈະຕ້ອງການຮຽນຮູ້ ຄຳ ສັ່ງ kill, pkill ແລະ killall ເພື່ອຍຸຕິຂັ້ນຕອນໃນ Linux.