Linux’ta apt, dnf ve pacman yazılım kurulumunun ve güncellemelerin temelidir. Bunlar “bozulmuş” gibi göründüğünde sorun yalnızca yeni programların kurulamaması anlamına gelmez. Çoğu zaman güvenlik güncellemeleri de durur ve tüm sistemin bakımı çok daha zor hale gelir. Yaygın nedenler arasında yarıda kesilmiş güncellemeler, bozuk mirror’lar, tutarsız paket veritabanları, imza hataları, kırılmış bağımlılıklar veya geride kalmış lock dosyaları bulunur. En önemli nokta, hemen rastgele cache ve yapılandırma dosyalarını silmeye başlamak değil, önce gerçekten hangi kısmın zarar gördüğünü anlamaktır.
Bazen asıl sorun paket yöneticisinin kendisi bozulmuş gibi görünür, oysa gerçek neden ağda, DNS’te, repository ayarlarında veya yetersiz disk alanında olabilir. Bu yüzden sorun giderme süreci, problemin iletişimde mi, repository tarafında mı, yerel veritabanında mı yoksa bağımlılıklarda mı olduğunu ayırmakla başlamalıdır.
Yaygın belirtiler
apt update,dnf updateveyapacman -Syuhata ile durur- Çözülemeyen bağımlılıklar veya bozuk paketler hakkında mesajlar görünür
- Repository’ler GPG veya imza hataları nedeniyle kullanılamaz hale gelir
- Veritabanı kilitlidir ve paket işlemleri çalışmaz
- Mirror’lar 404 veya timeout döndürür
- Yarıda kesilen güncellemeden sonra paket işlemleri düzgün çalışmaz
- Bazı kütüphaneler güncellendikten sonra paket yöneticisi artık başlamaz
Önce ne kontrol edilmelidir
İlk adım, sorunun gerçekten paket yöneticisinde mi yoksa ağ ya da DNS tarafında mı olduğunu belirlemektir.
ping -c 4 8.8.8.8
ping -c 4 google.com
ip addr
ip route
Eğer ağ veya DNS zaten bozuksa, apt, dnf ya da pacman hataları bunun sadece sonucu olabilir. Normal ağ bağlantısı çalışıyor ama yalnızca paket işlemleri başarısız oluyorsa, odak repository’lere, anahtarlara, lock dosyalarına, cache’e, veritabanlarına ve bağımlılıklara kaydırılmalıdır.
apt / dnf / pacman sorunlarında ortak nedenler
1. Yarıda kalan güncelleme
En yaygın nedenlerden biri, sürecin ortasında kesilen bir güncellemedir. Elektrik kesintisi, terminalin kapanması, SSH bağlantısının kopması veya grafik arayüzün donması, paket veritabanını veya bazı paketleri yarım kalmış durumda bırakabilir.
Böyle bir durumda hemen dosya silmeye başlamak yerine, önce yarım kalan durumu düzgün şekilde tamamlamaya çalışmak gerekir.
2. Geride kalan lock dosyaları
Paket yöneticileri aynı anda birden fazla işlemi önlemek için lock mekanizması kullanır. Başka bir işlem hâlâ çalışıyorsa ya da crash sonrasında yalnızca lock dosyası kaldıysa, sistem paket yöneticisinin zaten kullanımda olduğunu söyler.
Ancak lock dosyaları körü körüne silinmemelidir. Önce gerçekten ilgili hiçbir sürecin çalışmadığı doğrulanmalıdır.
ps aux | grep -E 'apt|dpkg|dnf|yum|pacman'
3. Bozulmuş repository yapılandırması
Üçüncü taraf repository’ler, eski PPA’lar, geçersiz mirror’lar veya dağıtım yükseltmesinden sonra kalan ayarlar paket kaynaklarını geçersiz hale getirebilir. Tipik belirtiler 404 hataları, eksik Release file veya metadata alma sorunlarıdır.
4. GPG anahtarı ve imza sorunları
Repository’ler normalde kriptografik olarak doğrulanır. Bir anahtarın süresi dolmuşsa, içe aktarılmamışsa, anahtar yönetimi değişmişse veya yerel keyring zarar görmüşse, paket yöneticisi güvenlik gerekçesiyle durur.
5. Bozuk bağımlılıklar
Bağımlılıklar çoğunlukla uyumsuz paket sürümleri zorla kurulduğunda, farklı repository’ler karıştırıldığında, kısmi güncellemeler yapıldığında veya sistem kütüphaneleri elle değiştirildiğinde bozulur. Bu durum özellikle pacman tabanlı sistemlerde kritik olsa da, apt ve dnf de kaynaklar kontrolsüz biçimde karıştırıldığında hızla kararsız hale gelir.
6. Bozuk cache veya metadata
Kısmen indirilmiş paketler, eski metadata veya bozuk senkronizasyon veritabanları paket listelerinin doğru okunmasını engelleyebilir ve kurulumların başarısız olmasına yol açabilir.
7. Disk alanı yetersizliği
Sık görülen ama çoğu zaman küçümsenen bir neden, yetersiz boş alandır. /var veya /boot gibi bölümler doluysa, dosyaların açılması ve yazılması sürecin ortasında başarısız olabilir ve paket sistemi tutarsız bir durumda kalabilir.
df -h
du -sh /var/cache/* 2>/dev/null
apt çalışmıyorsa ne kontrol edilmelidir
Debian / Ubuntu sistemlerinde yalnızca apt‘ye değil, onun altında çalışan dpkg‘nin durumuna da bakmak önemlidir.
Tam yapılandırılmamış paketleri onarma
sudo dpkg --configure -a
sudo apt --fix-broken install
Yarıda kalan bir güncellemeden sonra bu iki komut çoğu zaman en önemli ilk adımdır.
Paket listelerini yeniden yükleme
sudo apt update
Eğer burada 404, imza veya Release file hataları görülüyorsa, /etc/apt/sources.list ve /etc/apt/sources.list.d/ içeriği kontrol edilmelidir.
Cache temizleme
sudo apt clean
sudo apt autoclean
Eğer sorun bozuk veya eski cache’den kaynaklanıyorsa, bu yardımcı olabilir.
dnf çalışmıyorsa ne kontrol edilmelidir
Fedora / RHEL sistemlerinde özellikle metadata, işlem geçmişi ve repository yapılandırmasına dikkat edilmelidir.
Metadata’yı yeniden oluşturma
sudo dnf clean all
sudo dnf makecache
Eğer mirror bilgileri veya metadata zarar görmüşse, bu genellikle yararlı bir ilk adımdır.
Bağımlılıkları ve sistem tutarlılığını kontrol etme
sudo dnf check
sudo dnf distro-sync
Bu, sistemin hâlâ dağıtımın beklenen paket durumuna uyup uymadığını anlamaya yardımcı olur.
Geçmişi görüntüleme
sudo dnf history
sudo dnf history info last
Geçmiş kayıtları genellikle sorunların hangi güncellemeden sonra başladığını gösterir.
pacman çalışmıyorsa ne kontrol edilmelidir
Arch Linux’ta senkronizasyon veritabanları, anahtarlar, mirror’lar ve olası kısmi güncellemeler özellikle dikkatle incelenmelidir.
Veritabanlarını yeniden senkronize etme
sudo pacman -Syy
Yerel senkronizasyon veritabanı artık repository ile uyuşmuyorsa, bu genellikle ilk adımdır.
Tam güncelleme yapma
sudo pacman -Syu
Arch’ta kısmi güncellemelerden kaçınılmalıdır. Bazı paketleri güncelleyip diğerlerini eski bırakmak, sistemde tutarsızlık oluşmasının klasik yollarından biridir.
Anahtar sorunlarını kontrol etme
sudo pacman-key --init
sudo pacman-key --populate
Eğer sorun imzalarda veya keyring’de ise, yeniden başlatma gerekebilir.
Loglar çok önemlidir
Paket yöneticisi hatalarında yalnızca son satıra bakmak genellikle yeterli değildir. Yalnızca loglar ve ayrıntılı çıktı, sorunun imzalarda mı, bağımlılıklarda mı, ağda mı yoksa veritabanında mı olduğunu gösterir.
apt / dpkg
sudo tail -n 100 /var/log/apt/history.log
sudo tail -n 100 /var/log/dpkg.log
dnf
sudo dnf history
sudo journalctl -xe --no-pager | tail -n 100
pacman
sudo tail -n 100 /var/log/pacman.log
Pratik kontrol sırası
Adım 1: Ağı ve DNS’i kontrol edin
ping -c 4 8.8.8.8
ping -c 4 google.com
Adım 2: Boş disk alanını kontrol edin
df -h
Adım 3: Süreçleri ve lock dosyalarını kontrol edin
ps aux | grep -E 'apt|dpkg|dnf|yum|pacman'
Adım 4: Logları okuyun
Önce gerçekten en son hangi somut işlemin başarısız olduğunu anlamak gerekir.
Adım 5: Dağıtıma uygun doğru kurtarma komutlarını kullanın
apt için genelde dpkg --configure -a ile, dnf için metadata temizliği ile ve pacman için tam senkronizasyon ile anahtar kontrolüyle başlanır.
Nelerden kaçınılmalıdır
- Nedeni anlamadan lock dosyalarını silmeyin
- Güvenilmeyen kaynaklardan rastgele .deb / .rpm / diğer paketleri kurmayın
- Arch’ta tekrarlayan kısmi güncellemeler yapmayın
- apt ile dpkg’yi, dnf ile rpm’i veya pacman’i manuel dosya değişiklikleriyle kontrolsüz biçimde karıştırmayın
- Hatanın nedenini anlamadan imza denetimini kapatmayın
Sorunun tekrar oluşmasını nasıl önlersiniz
- Güncellemeler sırasında elektrik kesintisinden ve zorla kapatmadan kaçının
- Çok fazla üçüncü taraf repository eklemeyin
- Büyük güncellemelerden önce snapshot veya yedek alın
- Dağıtımın önerdiği güncelleme yöntemini izleyin
- Özellikle Arch’ta kısmi güncellemelerden kaçının
Sonuç
Her ne kadar apt, dnf veya pacman’in kendisi bozulmuş gibi görünse de, gerçek neden çoğu zaman ağda, lock dosyalarında, imzalarda, bağımlılıklarda, cache’de, disk alanında veya repository ayarlarında yatar. En önemli şey, hemen rastgele silme veya yeniden kurmaya yönelmek değil; önce loglar üzerinden hatanın gerçekte hangi katmanda ortaya çıktığını anlamaktır. Bundan sonra doğru yaklaşım kullanılmalıdır: apt için dpkg onarımı, dnf için metadata ve geçmiş incelemesi, pacman için ise tam senkronizasyon ve anahtar kontrolü.