How to Fix Could not get lock /var/lib/dpkg/lock error on Ubuntu
While using the apt-get command or the relatively new APT package management tool in Ubuntu Linux or its derivatives such as Linux Mint (which I actually use as my primary operating system for doing daily work), you might have encountered the error – “unable to lock the administration directory (/var/lib/dpkg/) is another process using it” on the command line.
This error can be so annoying especially for new Linux (Ubuntu) users who may not know exactly the cause of the error.
Introduction to the Problem
The /var/lib/dpkg/ directory is where the dpkg package manager stores the database or information about installed and available packages.
When an instance of dpkg or its more user-friendly front-ends such as aptitude, Software Center, Update Manager, and Synaptic Package Manager is running, it locks the directory to prevent other processes from accessing it to maintain the integrity of the database.
Simulating the Locked Directory
To simulate a locked /var/lib/dpkg/ directory, let’s install the neofetch package using apt install.
To get started, let’s run apt install hello in a terminal:
How can you solve the above error in case you bump into it in the future? There are several ways of dealing with this error(s), but in this guide, we will go through the two easiest and probably the most effective ways of solving it.
1. Find and Kill all apt-get or apt Processes
Run the command below to generate a list of all processes whose name comprises of the word apt, you will get a list inclusive of all apt or apt-get processes by using ps
and grep commands together with a pipeline.
# ps -A | grep apt
If you have a mystery apt or dpkg service running, terminate it and see if that resolves your error. Use the following command:
# kill 1939 # kill 1955
Replace 1939 and 1955
with the actual process ID (PID) from the above step. It should complete and return to a new command prompt line. If it doesn’t, force the process to stop by adding the -9
option:
# kill -9 1939 # kill -9 1955
This should have resolved the issue.
2. Delete the lock Files
A lock file simply prevents access to another file(s) or some data on your Linux system, this concept is present in Windows and other operating systems as well.
Once you run an apt-get or apt command, a lock file is created under the any of these directories /var/lib/apt/lists/, /var/lib/dpkg/ and /var/cache/apt/archives/.
This helps to avoid the apt-get or apt process that is already running from being interrupted by either a user or other system processes that would need to work with files being used by apt-get or apt. When the process has finished executing, the lock file is then deleted.
Important: In case a lock is still exiting in the two directories above with no noticeable apt-get or apt process running, this may mean the process was held for one reason or the other, therefore you need to delete the lock files in order to clear the error.
First execute the command below to remove the lock file in the /var/lib/dpkg/
directory:
# rm /var/lib/dpkg/lock
Afterwards force package(s) to reconfigure like so:
# dpkg --configure -a
Alternatively, delete the lock files in the /var/lib/apt/lists/
and cache directory as below:
# rm /var/lib/apt/lists/lock # rm /var/cache/apt/archives/lock
Next, update & upgrade your packages sources list as follows:
# apt update # apt upgrade
In conclusion, we have walked through two important methods to deal with a common problem faced by Ubuntu (and its derivatives) users, while running apt-get or apt as well as aptitude commands.
Do you have any other reliable methods to share meant for deal with this common error? Then get in touch with us via the feedback form below.
In addition, you may as well want to learn how to find and kill running processes and read through a simple guide to kill, pkill and kill all commands to terminate a process in Linux.
Good Luck!