Labojiet Ubuntu "Nevar bloķēt administrācijas direktoriju (/ var/lib/dpkg /)"


Lietojot APT pakotņu pārvaldības rīku Ubuntu Linux vai tā atvasinājumus, piemēram, Linux Mint (kuru es faktiski izmantoju kā savu galveno operētājsistēmu ikdienas darbu veikšanai), iespējams, esat saskāries ar kļūdu - “nevarat bloķēt administrācijas direktoriju (/ var/lib/dpkg /) ir vēl viens process, kas to izmanto ”komandrindā.

Šī kļūda var būt tik kaitinoša, it īpaši jaunajiem Linux (Ubuntu) lietotājiem, kuri, iespējams, precīzi nezina kļūdas cēloni.

Zemāk ir sniegts piemērs, parādot bloķēšanas faila kļūdu 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?

Zemāk esošā izeja ir vēl viens iespējamais tās pašas kļūdas gadījums:

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?

Kā jūs varat atrisināt iepriekš minēto kļūdu gadījumā, ja nākotnē to sadursities? Šīs kļūdas (-u) novēršanai ir vairāki veidi, taču šajā rokasgrāmatā mēs iziesim divus vienkāršākos un, iespējams, visefektīvākos risinājumus.

1. Atrodiet un nogaliniet visus apt-get vai apt procesus

Palaidiet zemāk esošo komandu, lai sagrābtu komandas kopā ar cauruļvadu.

$ ps -A | grep apt

Katram apt-get vai apt procesam, kuru varat redzēt iepriekš minētās komandas izvadā, nogaliniet katru procesu, izmantojot zemāk esošo komandu.

Procesa ID (PID) ir atrodams pirmajā kolonnā no iepriekš redzamā ekrānuzņēmuma.

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

Piemēram, zemāk esošajā komandā, kur 9 ir signāla SIGKILL signāls, tiks nogalināts pirmais apt process:

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

2. Dzēsiet bloķēšanas failus

Bloķēšanas fails vienkārši neļauj piekļūt citam (-iem) failam (-iem) vai dažiem datiem jūsu Linux sistēmā, šī koncepcija ir arī Windows un citās operētājsistēmās.

Kad esat palaidis komandu apt-get vai apt, jebkurā no šiem direktorijiem/var/lib/apt/lists /,/var/lib/dpkg/un/var/cache/apt/archives/tiek izveidots bloķēšanas fails.

Tas palīdz izvairīties no tā, ka apt-get vai apt procesu, kas jau darbojas, nevar pārtraukt lietotājs vai citi sistēmas procesi, kuriem būtu jāstrādā ar failiem, kurus izmanto apt-get vai apt. Kad process ir pabeigts, bloķēšanas fails tiek izdzēsts.

Svarīgi: Ja abos iepriekšminētajos direktorijos joprojām notiek bloķēšana, un tajā nav redzams apt-get vai apt process, tas var nozīmēt, ka process notika viena vai otra iemesla dēļ, tāpēc jums ir jāizdzēš bloķēšanas faili notīriet kļūdu.

Vispirms izpildiet zemāk esošo komandu, lai noņemtu bloķēšanas failu direktorijā /var/lib/dpkg/:

$ sudo rm /var/lib/dpkg/lock

Pēc tam piespiediet paketi (-es) pārkonfigurēt tā:

$ sudo dpkg --configure -a

Varat arī izdzēst bloķēšanas failus direktorijā /var/lib/apt/lists/ un kešatmiņā, kā norādīts tālāk

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

Pēc tam atjauniniet pakotņu avotu sarakstu šādi:

$ sudo apt update
OR
$ sudo apt-get update

Noslēgumā mēs esam izgājuši cauri divām svarīgām metodēm, lai risinātu kopēju problēmu, ar kuru saskaras Ubuntu (un tās atvasinājumu) lietotāji, vienlaikus darbinot apt-get vai apt, kā arī aptitude komandas.

Vai jums ir citas uzticamas koplietošanas metodes, kas paredzētas šīs izplatītās kļūdas novēršanai? Pēc tam sazinieties ar mums, izmantojot zemāk esošo atsauksmju veidlapu.

Turklāt jūs varat vēlēties iemācīties komandas kill, pkill un killall, lai izbeigtu procesu Linux.