Korjaa ”Hallintahakemiston (/var/lib/dpkg/) lukitseminen ei onnistu” Ubuntussa

Käyttäessäsi apt-get-komentoa tai suhteellisen uutta APT-paketinhallintatyökalua Ubuntu Linuxissa tai sen johdannaisissa, kuten Linux Mintissä (jota itse käytän pääasiallisena käyttöjärjestelmänä päivittäiseen työhöni), olet saattanut törmätä komentorivillä virheeseen – ”Hallintahakemiston (/var/lib/dpkg/) lukitseminen ei onnistu, koska sitä käyttää jokin toinen prosessi”.

Tämä virhe voi olla niin ärsyttävä varsinkin uusille Linuxin (Ubuntu) käyttäjille, jotka eivät välttämättä tiedä tarkalleen virheen syytä.

Alhaalla on esimerkki, jossa näkyy lukituskansion virhe Ubuntu 16.10:

tecmint@TecMint:~$ sudo apt install neofetch 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?

Alla oleva tuloste on toinen mahdollinen tapaus samasta virheestä:

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?

Miten voit ratkaista yllä olevan virheen, jos törmäät siihen tulevaisuudessa? On olemassa useita tapoja käsitellä tätä virhettä (virheitä), mutta tässä oppaassa käymme läpi kaksi helpointa ja luultavasti tehokkainta tapaa ratkaista se.

Löydä ja lopeta kaikki apt-get- tai apt-prosessit

Ajoita alla oleva komento luodaksesi luettelon kaikista prosesseista, joiden nimessä on sana apt, saat luettelon, joka sisältää kaikki apt- tai apt-get-prosessit, kun käytät ps– ja grep- eli grep-käskyjä yhdessä putkiston kanssa.

$ ps -A | grep apt
Löydä apt- ja apt-get-prosessit

Kunkin apt-get- tai apt-prosessin, jonka näet yllä olevan komennon tulosteessa, lopeta kukin prosessi alla olevalla komennolla.

Prosessin ID (PID) löytyy ensimmäisestä sarakkeesta yllä olevasta kuvakaappauksesta.

$ sudo kill -9 processnumberOR$ sudo kill -SIGKILL processnumber

Esimerkiksi alla oleva komento, jossa 9 on SIGKILL-signaalin numero, tappaa ensimmäisen apt-prosessin:

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

Poista lukitustiedostot

Lukitustiedosto yksinkertaisesti estää pääsyn toiseen tiedostoon (tiedostoihin) tai joihinkin tietoihin Linux-järjestelmässäsi, tämä käsite on myös Windowsissa ja muissa käyttöjärjestelmissä.

Kun suoritat apt-get- tai apt-komennon, lukitustiedosto luodaan mihin tahansa näistä hakemistoista /var/lib/apt/lists/, /var/lib/dpkg/ ja /var/cache/apt/archives/.

Tämä auttaa välttämään, ettei jo käynnissä oleva apt-get- tai apt-prosessi keskeytyisi joko käyttäjän tai muiden järjestelmäprosessien toimesta, jotka joutuisivat työskentelemään tiedostojen parissa, joita apt-get-get- tai apt-prosessi käyttää. Kun prosessi on suorittanut suorituksensa, lukitustiedosto poistetaan.

Tärkeää: Jos lukitus poistuu edelleen kahdessa edellä mainitussa hakemistossa ilman, että apt-get- tai apt-prosessia on havaittavasti käynnissä, tämä voi tarkoittaa, että prosessi on pidättynyt syystä tai toisesta, joten lukitustiedostot on poistettava virheen poistamiseksi.

Suoritat ensin alla olevan komennon poistaaksesi lukitustiedoston hakemistosta /var/lib/dpkg/:

$ sudo rm /var/lib/dpkg/lock

Sitten pakota paketti(t) uudelleen konfigurointiin näin:

$ sudo dpkg --configure -a

Vaihtoehtoisesti poista lukitustiedostot hakemistosta /var/lib/apt/lists/ ja välimuistihakemistosta seuraavasti:

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

Seuraavaksi päivitä pakettien lähdeluettelo seuraavasti:

$ sudo apt updateOR$ sudo apt-get update

Viimeiseksi olemme käyneet läpi kaksi tärkeää menetelmää, joilla voidaan käsitellä Ubuntun (ja sen johdannaisten) käyttäjien yleistä ongelmaa apt-get- tai apt- sekä aptitude-komentojen suorittamisen yhteydessä.

Onko sinulla muita luotettavia menetelmiä jakaa tarkoitettu käsitellä tätä yleistä virhettä? Ota sitten yhteyttä meihin alla olevalla palautelomakkeella.

Lisäksi saatat myös haluta oppia, miten löytää ja tappaa käynnissä olevia prosesseja ja lukea läpi yksinkertaisen oppaan kill-, pkill- ja killall-komennoista prosessin lopettamiseksi Linuxissa.

Vastaa

Sähköpostiosoitettasi ei julkaista.