1. Anasayfa
  2. Uncategorized

Ubuntu Desktop 20.04 sürümünde “/var/lib/apt/lists/lock” Hatasının Giderilmesi


Ubuntu kullanıcılarının sıklıkla karşılaştığı sorunlardan biri olan “/var/lib/apt/lists/lock” kilitleme hatası özellikle Ubuntu 20.04 sürümüyle birlikte daha yaygın hale gelmiştir. Bu durum genellikle sistem açılırken otomatik güncelleme kontrolü yapan uygulamaların (örneğin packagekitd) şu anılardaki yoğun kullanımında veya güncelleme kontrolü sırasında terminalden aynı işlem talep edildiğinde ortaya çıkmaktadır. Böylece iki farklı sürecin çakışması bu hatayı tetikler.

Bu makalede bu hatanın nedenlerini ve çözüm yollarına değineceğim.

Bu hata sistemde paket yönetimiyle ilgili bir kilit dosyasının başka bir süreç tarafından kullanılmasından kaynaklanmaktadır. Kilit dosyası sistemin paket yönetim süreçlerini düzenlemek ve aynı anda birden fazla işlem yapılmasını önlemek için kullanılır.

Örneğin packagekitd veya apt gibi süreçler bu dosyayı kullanarak kendilerini kilitler ve başka bir uygulamanın aynı anda paket listesi üzerinde değişiklik yapmasını engeller. Ancak bu süreçlerden biri tamamlınamadığında veya devreye aynı anda birden fazla süreç girdiğinde bu hata oluşur. Hatanın çıktısı genellikle aşağıdaki gibidir;

kadir@kadirkozan:~$ sudo apt update
Paket listeleri okunuyor... Bitti
E: Could not get lock /var/lib/apt/lists/lock. It is held by process 1161 (packagekitd)
N: Be aware that removing the lock file is not a solution and may break your system.
E: /var/lib/apt/lists/ dizini kilitlenemiyor

Bu durumun temel nedeni packagekitd isimli uygulamanın bilgisayar açılır açılmaz arka planda güncelleme sorgulaması yapmasıdır. Packagekitd sistemde mevcut yazılım paketlerini otomatik olarak güncelleştirmek veya yeni güncellemeleri kontrol etmek üzere tasarlanmış bir hizmettir. Bu hizmet genellikle masaüstü ortamlarında otomatik güncelleme bildirimlerini sağlamak amacıyla devreye girer.

Siz terminalden bir güncelleme komutu (sudo apt update) çalıştırdığınızda eğer packagekitd süreci henüz tamamlanmamışsa bu çakışma nedeniyle hata mesajı oluşturabilir. Aynı anda iki talep olduğundan bu çakışma şu hata mesajını oluşturur.

E: Could not get lock /var/lib/apt/lists/lock.

Bu sorunu çözmek için öncelikle packagekit sürecini sonlandırmanız gerekiyor. Ancak packagekit sürecini sonlandırmanın belirli riskleri olabilir. Örneğin bu hizmet devre dışı bırakıldığında otomatik güncelleme kontrolleri yapılamayabilir ve bu da sisteminizin güncel olmayan paketlerle çalışmasına neden olabilir. Ayrıca masaüstü ortamlarında güncelleme bildirimleri devre dışı kalabileceği için manuel güncelleme gereksinimi artabilir. Bu etkileri göz önünde bulundurarak süreci sonlandırmak en iyi çözüm şeklinde değerlendirilmelidir. Bunun için aşağıdaki adımları takip edebilirsiniz;

Terminalde aşağıdaki komutu yazarak packagekit sürecini sonlandırılır.

kadir@kadirkozan:~$ systemctl stop packagekit

packagekit sürecinin her sistem açılışında başlatılmasını önlemek için aşağıdaki komutu kullanabilirsiniz.

kadir@kadirkozan:~$ systemctl disable packagekit

Bu iki adımı tamamladıktan sonra artık terminalden güvenli bir şekilde güncelleme yapabilirsiniz. Terminalden güncelleme yapmanın avantajlarından biri işlemin kontrolünün tamamen kullanıcıda olması ve hata durumlarında daha ayrıntılı çıktılar alınabilmesidir. Ayrıca terminal komutları sistem kaynaklarını daha verimli kullanarak grafiksel güncelleme yöneticilerine göre daha hızlı bir deneyim sağlar.

Alternatif olarak GNOME Yazılım Merkezi gibi masaüstü uygulamalarını kullanarak da paket güncellemeleri yapabilirsiniz ancak bu yöntemler genellikle arka planda çalışan ek süreçler nedeniyle daha fazla sistem kaynağı tüketebilir.

packagekit sürecini devre dışı bıraktıktan sonra terminalde aşağıdaki komutu tekrar çalıştırarak güncellemeleri kontrol edebilirsiniz.

kadir@kadirkozan:~$ sudo apt update

Bu adımlardan sonra herhangi bir kilitleme hatası almadan sisteminizi güncellemeniz mümkün olacaktır. Ancak sistemin stabilitesi açısından bu adımları uygulamadan önce dikkatli olunmalıdır. Bazı Ubuntu sürümlerinde benzer bir çözüm yolu uygulanabilirken farklı sürümler spesifik konfigürasyonlar gerektirebilir.