Baru-baru ini saya mencoba menginstal aplikasi menggunakan perintah apt di Ubuntu ketika saya menemukan kesalahan berikut:
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?
Faktanya, ada kesalahan serupa yang mungkin Anda lihat:
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?
Dalam beberapa kasus, Anda mungkin melihatnya saat menggunakan Pusat Perangkat Lunak:

Kesalahan ini sangat mirip dengan kesalahan umum Ubuntu lainnya, Tidak dapat mengunci direktori /var/cache/apt/archives/ , dan yang menarik adalah perbaikannya juga serupa.
Anda melihat kesalahan ini karena beberapa program lain sedang mencoba memperbarui Ubuntu. Ketika sebuah perintah atau aplikasi memperbarui sistem atau menginstal perangkat lunak baru, itu mengunci file dpkg (manajer paket Debian).
Penguncian ini dilakukan agar dua proses tidak mengubah konten pada saat yang sama karena dapat menyebabkan situasi yang tidak beralasan dan kemungkinan sistem yang rusak.
Mari kita lihat langkah apa yang dapat Anda ambil untuk memperbaiki masalah 'tidak dapat mengunci direktori administrasi' ini.
Cara 1
Hal pertama yang harus Anda lakukan adalah memeriksa apakah ada program lain yang menjalankan pembaruan sistem atau menginstal program.
Jika Anda menggunakan baris perintah, periksa apakah aplikasi seperti Software Center, Software Updater, Synaptic package manager, Gdebi sedang menjalankan pembaruan/instalasi. Jika demikian, harap tunggu hingga program menyelesaikan proses yang berjalan.
Jika tidak ada aplikasi yang berjalan, harap periksa semua jendela terminal yang terbuka dan lihat apakah Anda sedang menjalankan pembaruan atau menginstal program. Jika ya, tunggu sampai selesai.
Jika tidak ada hal di atas yang terjadi, periksa proses lain mana yang menjalankan perintah apt (manajer paket untuk menangani perangkat lunak). Gunakan perintah ini:
ps aux | grep -i apt
Bagi saya, ini menunjukkan hasil ini:
abhishek@nuc:~$ ps aux | grep -i apt
root 1464 0.0 0.0 4624 772 ? Ss 19:08 0:00 /bin/sh /usr/lib/apt/apt.systemd.daily update
root 1484 0.0 0.0 4624 1676 ? S 19:08 0:00 /bin/sh /usr/lib/apt/apt.systemd.daily lock_is_held update
_apt 2836 0.8 0.1 96912 9432 ? S 19:09 0:03 /usr/lib/apt/methods/http
abhishek 6172 0.0 0.0 21532 1152 pts/1 S+ 19:16 0:00 grep --color=auto -i apt
Jika Anda melihat bahwa apt sedang digunakan oleh program seperti apt.systemd.daily update
, Anda beruntung, pembaca yang budiman.
Ini adalah daemon yang berjalan di latar belakang dan memeriksa pembaruan sistem secara otomatis saat Anda memulai sistem.
Di Ubuntu 18.04 dan versi yang lebih tinggi, bahkan mungkin mencoba mengunduh dan menginstal sendiri pembaruan keamanan penting. Setidaknya inilah yang saya lihat pada pengaturan default di Software & Updates tool di desktop Ubuntu.

Jika Anda berada di server Ubuntu, Anda dapat memeriksa apakah Anda telah mengaktifkan pemutakhiran tanpa pengawasan dengan memeriksa konten file /etc/apt/apt.conf.d/20auto-upgrades .
Jadi jika Anda melihat apt.systemd.daily menggunakan proses apt, yang harus Anda lakukan adalah menunggu beberapa menit. Saat pembaruan otomatis selesai, Anda seharusnya dapat menginstal perangkat lunak seperti biasa.
Sebagai solusi permanen, Anda dapat menonaktifkan pemeriksaan untuk pembaruan otomatis dan pemutakhiran tanpa pengawasan sama sekali , namun saya tidak akan menyarankannya karena alasan keamanan.
Nah, itu skenario sederhana dan bisa ditangani dengan mudah. Tapi itu mungkin tidak selalu terjadi. Jika beberapa program lain menggunakan apt, Anda perlu menanganinya secara berbeda.
Cara 2
Gunakan baris perintah Linux untuk menemukan dan menghentikan proses yang sedang berjalan . Untuk melakukannya, gunakan perintah di bawah ini:
ps aux | grep -i apt
Ini akan menunjukkan kepada Anda id dari proses yang berjalan apt atau apt-get. Pada contoh di bawah, id proses adalah 7343. Anda dapat mengabaikan baris terakhir yang berisi grep –color=auto
.

Anda dapat menggunakan id proses untuk menghentikannya dengan mengirimkan sinyal SIGTERM . Ganti <process_id> dengan nomor yang Anda dapatkan di output dari perintah sebelumnya.
sudo kill <process_id>
Periksa apakah proses dimatikan dengan menjalankan 'ps aux | perintah grep -i apt'. Jika masih berjalan, matikan paksa dengan sinyal SIGKILL:
sudo kill -9 <process_id>
Cara lain yang lebih mudah adalah dengan menggunakan perintah killall . Ini akan membunuh semua instance dari program yang sedang berjalan:
sudo killall apt apt-get
Cara 3
Metode di atas akan memperbaiki masalah untuk Anda dalam banyak kasus. Tapi kasus saya sedikit berbeda. Saya sedang memperbarui sistem saya dan secara tidak sengaja menutup terminal. Oleh karena itu, tidak ada proses yang berjalan tepat, tetapi masih menunjukkan kesalahannya.
Saya akan menyarankan mencoba dua metode di atas atau hanya me-restart sistem Anda terlebih dahulu. Jika tidak ada yang berhasil, maka hanya Anda yang memilih opsi untuk menghapus file kunci ini.
Dalam hal ini, akar penyebabnya adalah file kunci. Seperti disebutkan sebelumnya, file kunci digunakan untuk mencegah dua atau lebih proses menggunakan data yang sama. Saat perintah apt atau apt-get dijalankan, mereka membuat file kunci di beberapa tempat. Jika perintah apt sebelumnya tidak diakhiri dengan benar, file kunci tidak dihapus dan karenanya mencegah instance baru dari perintah apt-get atau apt .
Untuk memperbaiki masalah, yang perlu Anda lakukan hanyalah menghapus file kunci. Tetapi sebelum Anda melakukannya, sebaiknya hentikan proses apa pun yang menggunakan file kunci.
Gunakan perintah lsof untuk mendapatkan ID proses dari proses yang menyimpan file kunci. Periksa kesalahannya dan lihat file kunci apa yang dikeluhkannya dan dapatkan id dari proses yang menyimpan file kunci ini.
Jalankan perintah ini satu per satu.
sudo lsof /var/lib/dpkg/lock
sudo lsof /var/lib/apt/lists/lock
sudo lsof /var/cache/apt/archives/lock
Ada kemungkinan perintah tidak mengembalikan apa pun, atau hanya mengembalikan satu angka. Jika mereka mengembalikan setidaknya satu nomor, gunakan nomor tersebut dan matikan proses seperti ini (ganti <process_id>
dengan nomor yang Anda dapatkan dari perintah di atas):
sudo kill -9 <process_id>
Anda sekarang dapat menghapus file kunci dengan aman menggunakan perintah di bawah ini:
sudo rm /var/lib/apt/lists/lock
sudo rm /var/cache/apt/archives/lock
sudo rm /var/lib/dpkg/lock
Setelah itu, konfigurasi ulang paket:
sudo dpkg --configure -a
Sekarang jika Anda menjalankan perintah sudo apt update, semuanya akan baik-baik saja.
Unable to acquire the dpkg frontend lock
Jika Anda melihat kesalahan seperti ini:
abhishek@nuc:~$ sudo apt install grub-customizer
E: Could not get lock /var/lib/dpkg/lock-frontend - open (11: Resource temporarily unavailable)
E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), is another process using it?
Anda harus mengetahui proses mana yang menahan lock-frontend menggunakan perintah lsof seperti yang dibahas di bagian sebelumnya:
sudo lsof /var/lib/dpkg/lock-frontend
Inilah yang ditunjukkannya kepada saya:
abhishek@nuc:~$ sudo lsof /var/lib/dpkg/lock-frontend
lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs
Output information may be incomplete.
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
unattende 2823 root 5uW REG 8,2 0 145221 /var/lib/dpkg/lock-frontend
Jika Anda melihat kolom PERINTAH 'tanpa pengawasan , ini berarti pemutakhiran keamanan tanpa pengawasan sedang berjalan. Anda harus menunggu prosesnya selesai . Pada dasarnya, inilah yang saya diskusikan di metode 0 tetapi Anda mungkin melewatkannya.
Jika PERINTAH adalah sesuatu yang lain, Anda dapat mematikan proses dan kemudian menghapus file kunci. Anda dapat melihat id proses di bawah kolom PID. Gunakan PID ini untuk mematikan proses. Setelah itu, hapus file kunci dan jalankan perintah pembaruan untuk melihat apakah sudah diperbaiki.
sudo kill -9 PID
sudo rm /var/lib/dpkg/lock-frontend
sudo apt update