GNU/Linux >> Belajar Linux >  >> Ubuntu

Cara Memperbaiki 'E:Could not get lock /var/lib/dpkg/lock' Error di Ubuntu Linux

Baru-baru ini saya mencoba menginstal aplikasi menggunakan perintah apt di Ubuntu ketika saya menemukan kesalahan berikut:

E:Tidak dapat mengunci /var/lib/dpkg/lock – buka (11:Sumber daya tidak tersedia untuk sementara)
E:Tidak dapat mengunci direktori administrasi (/var/lib/dpkg/), apakah ada proses lain yang menggunakannya?

Sebenarnya, ada kesalahan serupa yang mungkin Anda lihat:

E:Tidak dapat mengunci /var/lib/apt/lists/lock – buka (11:Sumber daya tidak tersedia untuk sementara)
E:Tidak dapat mengunci direktori /var/lib/apt/lists/
E:Tidak dapat mengunci /var/lib/dpkg/lock – buka (11:Sumber daya tidak tersedia untuk sementara)
E:Tidak dapat mengunci direktori administrasi (/var/lib/dpkg/), apakah ada proses lain yang menggunakannya?

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 bahwa perbaikannya juga serupa.

Memperbaiki kesalahan “Tidak dapat mengunci direktori administrasi (/var/lib/dpkg/)”

Anda melihat kesalahan ini karena beberapa program lain 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 secara bersamaan karena dapat menyebabkan situasi yang tidak wajar dan kemungkinan sistem rusak.

Mari kita lihat langkah apa yang dapat Anda ambil untuk memperbaiki masalah 'tidak dapat mengunci direktori administrasi' ini.

Metode 0:

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 Pusat Perangkat Lunak, Pembaruan Perangkat Lunak, Manajer paket Synaptic, Gdebi menjalankan pembaruan/instalasi apa pun. Jika demikian, harap tunggu program menyelesaikan proses yang sedang berjalan.

Jika tidak ada aplikasi yang berjalan, periksa semua jendela terminal yang terbuka dan lihat apakah Anda 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 (pengelola paket untuk menangani perangkat lunak). Gunakan perintah ini:

ps aux | grep -i apt

Bagi saya, ini menunjukkan output ini:

[email protected]:~$ 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, ia bahkan dapat mencoba mengunduh dan menginstal pembaruan keamanan penting sendiri. Setidaknya ini yang saya lihat di pengaturan default di alat Software &Updates di desktop Ubuntu.

Jika Anda berada di server Ubuntu, Anda dapat memeriksa apakah Anda telah mengaktifkan upgrade 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 pembaruan otomatis dan pemutakhiran tanpa pengawasan sama sekali, namun saya tidak akan menyarankannya untuk alasan keamanan.

Nah, itu adalah skenario sederhana dan bisa ditangani dengan mudah. Tapi itu mungkin tidak selalu terjadi. Jika beberapa program lain menggunakan apt, Anda perlu menanganinya secara berbeda.

Metode 1:

Gunakan baris perintah Linux untuk menemukan dan mematikan 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 prosesnya adalah 7343. Anda dapat mengabaikan baris terakhir yang berisi ‘grep –color=auto’.

Anda dapat menggunakan id proses untuk menghentikannya dengan mengirimkan sinyal SIGTERM. Ganti dengan nomor yang Anda dapatkan di output dari perintah sebelumnya.

sudo kill <process_id>

Periksa apakah prosesnya dimatikan dengan menjalankan 'ps aux | grep -i apt' perintah. 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 mematikan semua instance dari program yang sedang berjalan:

sudo killall apt apt-get

Metode 2

Metode di atas akan memperbaiki masalah Anda dalam banyak kasus. Tapi kasus saya agak berbeda. Saya memperbarui sistem saya dan secara tidak sengaja menutup terminal. Oleh karena itu, tidak ada proses yang berjalan dengan tepat, tetapi masih menunjukkan kesalahan kepada saya.

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 ini untuk menghapus file kunci.

Dalam hal ini, akar masalahnya adalah file kunci. Seperti disebutkan sebelumnya, file kunci digunakan untuk mencegah dua atau lebih proses menggunakan data yang sama. Ketika perintah apt atau apt-get dijalankan, mereka membuat file kunci di beberapa tempat. Jika perintah apt sebelumnya tidak dihentikan dengan benar, file kunci tidak akan dihapus dan oleh karena itu mereka mencegah contoh baru dari perintah apt-get atau apt.

Untuk memperbaiki masalah, yang perlu Anda lakukan adalah menghapus file kunci. Namun 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 kesalahan dan lihat file kunci apa yang dikeluhkan 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

Mungkin saja perintah tidak mengembalikan apa pun, atau hanya mengembalikan satu nomor. Jika mereka mengembalikan setidaknya satu nomor, gunakan nomor tersebut dan matikan proses seperti ini (ganti dengan nomor yang Anda dapatkan dari perintah di atas):

sudo kill -9 <process_id>

Sekarang Anda 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, konfigurasikan ulang paket:

sudo dpkg --configure -a

Sekarang jika Anda menjalankan perintah sudo apt update, semuanya akan baik-baik saja.

Pemecahan Masalah 1:“Tidak dapat memperoleh kunci frontend dpkg”

Jika Anda melihat kesalahan seperti ini:

[email protected]:~$ 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 mencari tahu 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:

[email protected]:~$ 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 ‘tanpa pengawasan ' COMMAND kolom, ini berarti peningkatan keamanan tanpa pengawasan sedang berjalan. Anda harus menunggu prosesnya selesai . Pada dasarnya, inilah yang saya bahas di metode 0 tetapi Anda mungkin melewatkannya.

Jika COMMAND 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

Apa itu lsof:warning can't stat() fuse.gvfsd-fuse file system?

Catatan:Jika Anda melihat "lsof:warning can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs
Informasi keluaran mungkin tidak lengkap” setelah menjalankan perintah lsof yang disebutkan sebelumnya, jangan panik.

Itu bukan kesalahan. Hanya saja lsof mencoba untuk melihat ke dalam sistem file yang dipasang juga dan peringatannya adalah tentang sistem yang dipasang tersebut.

File dikunci oleh proses pada sistem file utama Anda jadi jika itu menunjukkan peringatan dan tidak ada output, ini hanya berarti tidak ada proses yang menggunakan file kunci tersebut.

Pemecahan Masalah 2:“dpkg:error:dpkg frontend dikunci oleh proses lain”

Jika Anda melihat kesalahan “dpkg frontend dikunci oleh proses lain” saat menjalankan langkah-langkah dalam metode 2, Anda perlu satu langkah tambahan.

Pertama, cari tahu id dari proses yang menahan file kunci.

sudo lsof /var/lib/dpkg/lock-frontend

Perintah di atas akan memberi Anda rincian proses menggunakan file kunci. Gunakan ID proses untuk mematikan program ini:

sudo kill -9 PID

Sekarang Anda dapat menghapus kunci dan mengkonfigurasi ulang dpkg:

sudo rm /var/lib/dpkg/lock-frontend
sudo dpkg --configure -a

Apakah itu berhasil untuk Anda? Metode mana yang memperbaikinya untuk Anda?

Saya harap tip kecil ini membantu Anda memperbaiki kesalahan "Tidak bisa mengunci /var/lib/dpkg/lock". Jika ya, beri tahu saya di komentar metode mana yang berhasil untuk Anda.

Jika Anda masih menghadapi masalah, beri tahu saya. Saya akan mencoba membantu Anda.

Saran lain juga diterima di komentar.



Ubuntu
  1. Bagaimana Cara Membunuh Proses Memegang Kunci Apt?

  2. Cara memperbaiki `Tidak bisa mendapatkan kunci / var / lib / dpkg / kunci – buka (11 sumber daya sementara tidak tersedia) 'kesalahan

  3. Cara memperbaiki kesalahan “Lockfile / var / lib / dpkg / lock-frontend tidak dapat dibuka”

  1. Perbaiki Kesalahan "dpkg:error:parsing file '/var/lib/dpkg/updates/0014′" Di Ubuntu

  2. Perbaiki E:Tidak bisa mendapatkan kunci /var/cache/apt/archives/lock [Kiat Cepat]

  3. Ubuntu E:Tidak bisa mendapatkan kesalahan kunci /var/lib/dpkg/lock - Perbaiki Sekarang?

  1. Bagaimana Memperbaiki sub-proses /usr/bin/dpkg mengembalikan kode kesalahan (1) di Ubuntu

  2. Cara Memperbaiki Tidak bisa mendapatkan kunci /var/lib/dpkg/lock Error di Ubuntu

  3. Bagaimana Linux Menangani Beberapa Pemisah Jalur Berturut-turut (/home////username///file)?