Ürün belgeleriLinux VPS ve VDS
Ubuntu ve Debian'da apt ve dpkg hatalarını düzeltin
apt ve dpkg hatalarına çözümler: başka işlemin tuttuğu kilit, yarım kalan dpkg, bozuk bağımlılıklar, NO_PUBKEY, geçersiz Release dosyası ve bekletilen paketler.
- Orta
- 15 dk okuma
- Güncellendi
Bu sayfada
- Başlamadan önce
- "Could not get lock /var/lib/dpkg/lock-frontend"
- "dpkg was interrupted, you must manually run 'sudo dpkg --configure -a'"
- "Unmet dependencies. Try 'apt --fix-broken install'"
- "NO_PUBKEY" veya "The following signatures couldn't be verified"
- "Release file … is not valid yet"
- "changed its 'Suite' value from 'stable' to 'oldstable'"
- apt update çalıştırınca "404 Not Found"
- "The following packages have been kept back"
- "E: Sub-process /usr/bin/dpkg returned an error code (1)"
- Sonraki adımlar
Paket hataları güncellemeleri durdurur, bu yüzden güvenlik açısından önemlidir. Çoğu, sorunu tam olarak adlandıran bir mesaj yazar. Mesajınızı aşağıda bulun, çözümü uygulayın ve sudo apt update && sudo apt upgrade ile doğrulayın.
Başlamadan önce
- SSH üzerinden
sudoyetkili bir kullanıcıyla çalışın; bkz. Linux sunucunuza bağlanın. - Çıktıdaki ilk hatayı okuyun: sonraki hatalar çoğu zaman onun sonucudur.
- Önce boş alana bakın, çünkü birçok apt hatası aslında dolu bir disktir:
df -h / /var /boot. Bir dosya sistemi %100 doluysa önce disk dolu rehberi vesudo apt cleanile bunu çözün.
"Could not get lock /var/lib/dpkg/lock-frontend"
E: Could not get lock /var/lib/dpkg/lock-frontend. It is held by process 1234 (unattended-upgr)Neden: başka bir paket işlemi çalışıyor. Açılıştan hemen sonra bu genellikle otomatik güvenlik güncellemesidir.
Çözüm: bitmesini bekleyin. Ne yaptığına bakın:
ps -o pid,etime,cmd -p 1234Birkaç dakika sonra yeniden deneyin. Kilit dosyalarını silmeyin. Kilidi artık hiçbir işlem tutmuyorsa (örneğin bir yükseltme sırasında çökme veya kopan SSH oturumundan sonra) ve apt hâlâ reddediyorsa sonraki bölümle devam edin.
"dpkg was interrupted, you must manually run 'sudo dpkg --configure -a'"
Neden: bir kurulum yarıda kaldı; örneğin SSH bağlantısı koptuğunda.
Çözüm: dpkg'nin açılmış her paketin yapılandırmasını tamamlamasını sağlayın, ardından veritabanını denetleyin:
sudo dpkg --configure -a
sudo dpkg --auditDoğrulama: dpkg --audit hiçbir şey yazmaz ve sudo apt update && sudo apt upgrade sorunsuz çalışır. Uzun yükseltmeler için tmux veya screen kullanın; böylece kopan bir bağlantı onları yeniden yarıda bırakmaz.
"Unmet dependencies. Try 'apt --fix-broken install'"
Neden: bir paket, bağımlılıklarının tamamı olmadan kuruldu; çoğunlukla indirilmiş bir .deb dosyasından.
Çözüm: apt'nin bir onarım bulmasına izin verin:
sudo apt --fix-broken installOnaylamadan önce apt'nin kurmak veya kaldırmak istediği paketlerin listesini okuyun. Önemli bir şeyi kaldırmak istiyorsa iptal edin ve bunun yerine soruna yol açan paketi kaldırın (sudo apt remove paket-adi).
"NO_PUBKEY" veya "The following signatures couldn't be verified"
W: GPG error: https://repo.example.com stable InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 0123456789ABCDEFNeden: üçüncü taraf bir depo yapılandırılmış, ancak imza anahtarı eksik, süresi dolmuş veya üretici tarafından değiştirilmiş.
Çözüm: anahtarı yeniden indirmek için üreticinin güncel kurulum talimatlarını izleyin. Önerilen düzen, anahtarı kendi dosyasında saklar ve depo girdisinde signed-by ile belirtir; böylece anahtar yalnızca o depo için güvenilir sayılır:
sudo install -d -m 0755 /etc/apt/keyrings
ls /etc/apt/sources.list.d/Depo dosyasındaki signed-by yolunu, üreticinin oluşturmanızı söylediği anahtar dosyasıyla karşılaştırın. apt-key kullanmayın ve üçüncü taraf anahtarları /etc/apt/trusted.gpg.d/ içine koymayın. Depoyu artık kullanmıyorsanız bunun yerine dosyasını /etc/apt/sources.list.d/ içinden silin.
"Release file … is not valid yet"
Neden: sunucunun saati geride, bu yüzden deponun imzası gelecekten geliyormuş gibi görünüyor.
Çözüm: timedatectl çıktısına bakın ve saat eşitlemeyi ana bilgisayar adı, saat dilimi ve saat eşitleme rehberinde anlatıldığı gibi açın, ardından sudo apt update komutunu yeniden çalıştırın.
"changed its 'Suite' value from 'stable' to 'oldstable'"
Neden: Debian kaynaklarınız sürüm adı yerine stable takma adını kullanıyor ve yeni bir Debian sürümü çıktı. Debian 13 yayımlandığında Debian 12 oldstable oldu.
Çözüm: sürümünüzde mi kalmak yoksa yükseltmek mi istediğinize karar verin. Kalmak için /etc/apt/ altındaki dosyalarda stable yerine sürüm adınızı (Debian 12 için bookworm, Debian 13 için trixie) yazın ve sudo apt update çalıştırın. Değişikliği bir betikte bir kez kabul etmek için apt-get komutunun --allow-releaseinfo-change seçeneği vardır. Yükseltmek için bkz. Ubuntu veya Debian'ı yeni sürüme yükseltme.
apt update çalıştırınca "404 Not Found"
Neden: depo artık o adreste değil. Üçüncü taraf bir depoda üretici onu taşımış veya kaldırmıştır. Sistemin kendi depolarında ise sürüm kullanım ömrünün sonuna ulaşmıştır: Ubuntu, kullanım ömrü dolan sürümleri normal arşivden eski sürümler için ayrılmış bir arşiv sunucusuna taşır.
Çözüm: üçüncü taraf bir depoda girdisini güncelleyin veya kaldırın. Kullanım ömrü dolmuş bir sürümde kalıcı çözüm desteklenen bir sürümdür: onu adım adım yükseltin ya da sunucuyu güncel bir imajla yeniden kurup verilerinizi geri yükleyin (işletim sistemini yeniden kurma).
"The following packages have been kept back"
Neden: Ubuntu'da genellikle bir aşamalı güncelleme: yeni sürüm birkaç gün içinde makinelerin giderek artan bir payına sunulur. Paketler, yükseltme başka bir paketi kaldıracağı için veya biri onları apt-mark hold ile beklettiği için de geride tutulabilir.
Çözüm: paketi kontrol edin:
apt-cache policy paket-adi
apt-mark showholdphased ve bir yüzdeyle işaretlenmiş bir aday sürüm size otomatik olarak ulaşır; mesajı görmezden gelebilirsiniz. Yeni veya kaldırılan bağımlılıklar yüzünden bekletilen bir paket için listeyi inceleyip sudo apt full-upgrade çalıştırın. Bilinçli bir beklemeyi sudo apt-mark unhold paket-adi ile kaldırın.
"E: Sub-process /usr/bin/dpkg returned an error code (1)"
Neden: bir paketin kendi kurulum veya kaldırma betiği başarısız oldu. Asıl neden bu satırın üstünde yazar.
Çözüm: orada adı geçen paketin ilk hatasına kadar yukarı kaydırın. Sık nedenler dolu bir disk, yapılandırması yüzünden başlayamayan bir hizmet (sudo journalctl -xeu hizmet-adi ile bakın) ve sizin değiştirdiğiniz bir yapılandırma dosyasıdır. Nedeni düzelttikten sonra sudo dpkg --configure -a komutunu yeniden çalıştırın.
Sonraki adımlar
- Güvenlik güncellemeleri sizin müdahaleniz olmadan gelsin: otomatik güncellemeler.
- Eski bir sürüm mü kullanıyorsunuz? Ubuntu veya Debian'ı yeni sürüme yükseltme.
Sık sorulan sorular
Kilit dosyalarını silebilir miyim?
Hayır. Kilit, başka bir paket işlemi, çoğunlukla otomatik güvenlik güncellemeleri çalıştığı için vardır. O çalışırken kilidi silmek paket veritabanını bozabilir. Bunun yerine işlemin bitmesini bekleyin.
Bekletilen (kept back) paketleri görmezden gelmek güvenli mi?
Ubuntu'da genellikle evet: aşamalı güncellemeler yeni sürümü makinelere kademeli olarak dağıtır ve sizinki onu daha sonra otomatik olarak alır. Paket başka bir nedenle bekletiliyorsa apt full-upgrade veya paketi adıyla kurmak sorunu çözer.
apt update çalıştırınca neden 404 Not Found görüyorum?
Ya üçüncü taraf bir depo taşındı ya da sürüm kullanım ömrünün sonuna ulaştı ve paketleri normal yansılardan kaldırıldı. Desteklenen bir sürüme yükseltin veya sunucuyu güncel bir imajla yeniden kurun.
apt mi yoksa apt-get mi kullanmalıyım?
İkisi de aynı paket sistemini kullanır. apt terminalde çalışmak içindir, ilerleme ve renk gösterir; apt-get betikler için kararlı bir çıktı verir. Bu rehberdeki çözümler ikisiyle de çalışır.