Az apt-get parancs vagy a viszonylag új APT csomagkezelő eszköz használata közben az Ubuntu Linuxban vagy annak származékaiban, például a Linux Mintben (amelyet én a napi munkámhoz elsődleges operációs rendszerként használok), előfordulhatott, hogy a parancssorban a következő hibával találkozott: “az adminisztrációs könyvtár (/var/lib/dpkg/) zárolása nem lehetséges, mert egy másik folyamat használja”.
Ez a hiba nagyon bosszantó lehet, különösen az új Linux (Ubuntu) felhasználók számára, akik esetleg nem tudják pontosan a hiba okát.
Az alábbiakban egy példa, amely a lock file hibát mutatja az Ubuntu 16-ban.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?
Az alábbi kimenet ugyanennek a hibának egy másik lehetséges esete:
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?
Hogyan lehet megoldani a fenti hibát, ha a jövőben belebotlik? Többféleképpen is kezelhető ez(ek) a hiba, de ebben az útmutatóban a két legegyszerűbb és valószínűleg leghatékonyabb megoldási módot fogjuk végigvenni.
Megtalálni és megölni az összes apt-get vagy apt folyamatot
Futtassa az alábbi parancsot az összes olyan folyamat listájának létrehozásához, amelynek neve az apt szót tartalmazza, az összes apt vagy apt-get folyamatot tartalmazó listát kapja a ps
és grep parancsok használatával együtt egy csővezetékkel.
$ ps -A | grep apt
Minden egyes apt-get vagy apt folyamathoz, amelyet a fenti parancs kimenetén láthat, az alábbi parancs segítségével végezze el az egyes folyamatokat.
A fenti képernyőkép első oszlopában található a folyamat azonosítója (PID).
$ sudo kill -9 processnumberOR$ sudo kill -SIGKILL processnumber
Az alábbi parancsban például, ahol a 9
a SIGKILL jel száma, megöli az első apt folyamatot:
$ sudo kill -9 13431OR$ sudo kill -SIGKILL 13431
Delete the lock Files
A lock fájl egyszerűen megakadályozza a hozzáférést egy másik fájl(ok)hoz vagy bizonyos adatokhoz a Linux rendszerben, ez a koncepció a Windows és más operációs rendszerekben is jelen van.
Az apt-get vagy apt parancs futtatása után egy lock fájl jön létre a /var/lib/apt/lists/, /var/lib/dpkg/ és /var/cache/apt/archives/ könyvtárak bármelyikében.
Ez segít elkerülni, hogy a már futó apt-get vagy apt folyamatot megszakítsa akár egy felhasználó, akár más rendszerfolyamat, amelynek az apt-get vagy apt által használt fájlokkal kellene dolgoznia. Amikor a folyamat befejezte a végrehajtást, a lock fájl törlésre kerül.
Fontos: Ha a fenti két könyvtárban még mindig kilép egy lock, anélkül, hogy észrevehető apt-get vagy apt folyamat futna, ez azt jelentheti, hogy a folyamatot valamilyen okból visszatartották, ezért törölni kell a lock fájlokat, hogy a hiba megszűnjön.
Először is hajtsa végre az alábbi parancsot a /var/lib/dpkg/
könyvtárban lévő lock fájl eltávolítására:
$ sudo rm /var/lib/dpkg/lock
Ezután kényszerítse a csomag(ok) újrakonfigurálását a következőképpen:
$ sudo dpkg --configure -a
Alternatívaként törölje a /var/lib/apt/lists/
és a cache könyvtárban lévő lock fájlokat az alábbiak szerint:
$ sudo rm /var/lib/apt/lists/lock$ sudo rm /var/cache/apt/archives/lock
Következő lépésként frissítse a csomagok forráslistáját a következőképpen:
$ sudo apt updateOR$ sudo apt-get update
Végezetül végigjártunk két fontos módszert az Ubuntu (és származékai) felhasználói által az apt-get vagy apt, valamint az aptitude parancsok futtatása során felmerülő gyakori probléma kezelésére.
Meg tudsz osztani más megbízható módszereket, amelyeket ennek a gyakori hibának a kezelésére szántál? Akkor vegye fel velünk a kapcsolatot az alábbi visszajelzési űrlapon keresztül.
Ezeken kívül érdemes megtanulni, hogyan lehet megtalálni és megölni a futó folyamatokat, és átolvasni egy egyszerű útmutatót a kill, pkill és killall parancsokról, amelyekkel megszüntethet egy folyamatot Linuxban.