Linux sistemlərində apt, dnf və pacman proqramların quraşdırılması və yenilənməsi üçün əsas mexanizmlərdir. Onlar “sıradan çıxmış” kimi görünəndə problem təkcə yeni proqram quraşdıra bilməmək olmur; təhlükəsizlik yeniləmələri də dayana bilər və sistemin saxlanması xeyli çətinləşər. Ən çox rast gəlinən səbəblər bunlardır: yarımçıq qalan yeniləmələr, nasaz mirror-lar, uyğunsuz paket bazası, imza yoxlamasının uğursuz olması, pozulmuş asılılıqlar və ya qalmış lock faylları. Ən vacib məqam cache və konfiqurasiya fayllarını kor-koranə silmək deyil, əvvəlcə həqiqətən hansı hissənin zədələndiyini başa düşməkdir.
Bəzən elə görünür ki, paket meneceri özü pozulub, amma əsl səbəb şəbəkə, DNS, repository sazlaması və ya diskdə boş yerin az olması olur. Buna görə də ilkin diaqnostika problemin rabitədə, repository-də, lokal bazada, yoxsa asılılıqlarda olduğunu ayırd etməklə başlamalıdır.
Tez-tez görünən əlamətlər
apt update,dnf updatevə yapacman -Syusəhvlə dayanır- Həll olunmayan asılılıqlar və ya “broken packages” barədə mesajlar görünür
- GPG və ya imza xətalarına görə repository-lər istifadə olunmur
- Baza lock vəziyyətində olur və paket əməliyyatları işləmir
- Mirror-lar 404 və ya timeout qaytarır
- Yarımçıq qalan yeniləmədən sonra paket əməliyyatları normal işləməyir
- Bəzi kitabxana yeniləmələrindən sonra paket meneceri özü açılmır
Əvvəlcə nə yoxlanmalıdır
İlk addım problemin həqiqətən paket meneceri ilə bağlı olub-olmadığını, yoxsa şəbəkə və DNS-dən qaynaqlandığını müəyyən etməkdir.
ping -c 4 8.8.8.8
ping -c 4 google.com
ip addr
ip route
Əgər şəbəkə və ya DNS özü problemlidirsə, apt, dnf və ya pacman xətaları sadəcə onun nəticəsi ola bilər. Əksinə, adi şəbəkə işləyir, amma yalnız paket əməliyyatları uğursuz olur, onda repository-lər, açarlar, lock-lar, cache, baza və asılılıqlar üzərinə fokuslanmaq lazımdır.
apt / dnf / pacman üçün ümumi səbəblər
1. Yarımçıq qalan yeniləmə
Ən çox rast gəlinən səbəblərdən biri yeniləmənin ortada dayanmasıdır. Elektrik kəsilməsi, terminalın bağlanması, SSH bağlantısının qırılması və ya qrafik mühitin donması paket bazasını və ya bəzi paketləri yarımçıq vəziyyətdə qoya bilər.
Belə hallarda faylları dərhal silmək əvəzinə, əvvəlcə yarımçıq qalan vəziyyəti düzgün tamamlamağa çalışmaq lazımdır.
2. Qalmış lock faylları
Paket menecerləri eyni anda bir neçə əməliyyatı bloklamaq üçün lock istifadə edir. Əgər başqa proses hələ də işləyirsə və ya crash-dən sonra yalnız lock qalıbsa, sistem paket menecerinin artıq istifadədə olduğunu göstərəcək.
Ancaq lock fayllarını səbəbi anlamadan silmək düzgün deyil. Əvvəlcə əlaqəli proseslərin həqiqətən dayanıb-dayanmadığı yoxlanmalıdır.
ps aux | grep -E 'apt|dpkg|dnf|yum|pacman'
3. Repository konfiqurasiyasının pozulması
Üçüncü tərəf repository-ləri, köhnə PPA-lar, artıq işləməyən mirror-lar və ya distributiv yenilənməsindən qalan köhnə sazlamalar paket mənbələrini etibarsız edə bilər. Tipik əlamətlər 404, Release file-in olmaması və metadata yükləmə səhvləridir.
4. GPG açarı və imza problemləri
Repository-lər adətən kriptoqrafik yoxlamadan keçir. Əgər açar vaxtı keçibsə, import edilməyibsə, açar idarəetmə üsulu dəyişibsə və ya lokal keyring zədələnibsə, paket meneceri təhlükəsizlik səbəbilə dayanacaq.
5. Pozulmuş asılılıqlar
Asılılıqlar çox vaxt uyğun olmayan paket versiyalarını zorla quraşdıranda, fərqli repository-ləri qarışdıranda, partial update etdikdə və ya sistem kitabxanalarını əllə dəyişəndə pozulur. Bu, xüsusilə pacman əsaslı sistemlərdə təhlükəlidir, amma apt və dnf də mənbələr nizamsız qarışdırıldıqda tez qeyri-sabit olur.
6. Zədələnmiş cache və ya metadata
Yarımçıq yüklənmiş paketlər, köhnə metadata və ya zədələnmiş sinxronizasiya bazaları paket siyahılarının düzgün oxunmamasına və quraşdırmaların uğursuz olmasına səbəb ola bilər.
7. Diskdə boş yerin azlığı
Tez-tez gözdən qaçan səbəblərdən biri boş yerin kifayət etməməsidir. Əgər /var və ya /boot kimi bölmələr doludursa, faylların çıxarılması və yazılması yarımçıq qala və paket sistemi zədələnmiş vəziyyətdə qala bilər.
df -h
du -sh /var/cache/* 2>/dev/null
apt problemli olduqda nəyə baxmaq lazımdır
Debian / Ubuntu sistemlərində yalnız apt-ə yox, onun altında işləyən dpkg-nin vəziyyətinə də baxmaq vacibdir.
Yarımçıq konfiqurasiya olunmuş paketləri düzəltmək
sudo dpkg --configure -a
sudo apt --fix-broken install
Yarımçıq qalan yeniləmədən sonra bu iki əmr adətən ilk istifadə olunan bərpa addımıdır.
Paket siyahılarını yenidən yükləmək
sudo apt update
Əgər burada 404, imza və ya Release file xətası görünürsə, /etc/apt/sources.list və /etc/apt/sources.list.d/ yoxlanmalıdır.
Cache-i təmizləmək
sudo apt clean
sudo apt autoclean
Problem zədələnmiş və ya köhnəlmiş cache-dən qaynaqlanırsa, bu faydalı ola bilər.
dnf problemli olduqda nəyə baxmaq lazımdır
Fedora / RHEL sistemlərində əsas diqqət metadata, tranzaksiya tarixçəsi və repository sazlamalarına verilməlidir.
Metadata-nı yenidən qurmaq
sudo dnf clean all
sudo dnf makecache
Mirror məlumatı və ya metadata zədələnibsə, bu adətən faydalı ilk addımdır.
Asılılıqları və sistemin uyğunluğunu yoxlamaq
sudo dnf check
sudo dnf distro-sync
Bu, sistemin distributivin gözlənilən paket vəziyyəti ilə hələ uyğun olub-olmadığını göstərir.
Tarixçəyə baxmaq
sudo dnf history
sudo dnf history info last
Tarixçə çox vaxt problemin hansı yeniləmədən sonra başladığını göstərir.
pacman problemli olduqda nəyə baxmaq lazımdır
Arch Linux-da əsas diqqət sinxronizasiya bazalarına, açarlara, mirror-lara və partial update olub-olmamasına verilməlidir.
Bazaları yenidən sinxronlaşdırmaq
sudo pacman -Syy
Əgər lokal sinxronizasiya bazası repository ilə uyğun gəlmirsə, bu adətən ilk addımdır.
Tam sistem yeniləməsi
sudo pacman -Syu
Arch sistemlərində partial update-dən qaçmaq lazımdır. Bəzi paketləri yeniləyib digərlərini köhnə saxlamaq sistem uyğunsuzluğunun ən klassik səbəblərindəndir.
Açar problemlərini yoxlamaq
sudo pacman-key --init
sudo pacman-key --populate
Əgər problem imza və ya keyring ilə bağlıdırsa, yenidən qurulma tələb oluna bilər.
Log-lar çox vacibdir
Paket meneceri xətalarında yalnız son sətrə baxmaq kifayət etmir. Log-lar və detallı çıxış bunun imza, asılılıq, şəbəkə və ya baza problemi olduğunu anlamağa kömək edir.
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
Praktik yoxlama ardıcıllığı
Addım 1: Şəbəkə və DNS-i yoxlayın
ping -c 4 8.8.8.8
ping -c 4 google.com
Addım 2: Boş disk yerini yoxlayın
df -h
Addım 3: Prosesləri və lock-ları yoxlayın
ps aux | grep -E 'apt|dpkg|dnf|yum|pacman'
Addım 4: Log-ları oxuyun
Əvvəlcə ən son hansı konkret əməliyyatın uğursuz olduğunu başa düşmək lazımdır.
Addım 5: Distribusiyaya uyğun bərpa əmrlərindən istifadə edin
apt üçün adətən dpkg --configure -a, dnf üçün metadata təmizlənməsi, pacman üçün isə tam sinxronizasiya və açar yoxlaması ilə başlamaq lazımdır.
Nələrdən qaçmaq lazımdır
- Səbəbi anlamadan lock fayllarını silmək
- Etibarsız mənbələrdən .deb / .rpm / digər paketləri quraşdırmaq
- Arch sistemlərində təkrar partial update etmək
- apt ilə dpkg, dnf ilə rpm və ya pacman ilə əl dəyişikliklərini nizamsız şəkildə qarışdırmaq
- Xətanı anlamadan imza yoxlamasını söndürmək
Problemin təkrar olmaması üçün
- Yeniləmə zamanı elektrik kəsilməsi və məcburi dayandırmadan qaçın
- Çox sayda üçüncü tərəf repository əlavə etməyin
- Böyük yeniləmələrdən əvvəl snapshot və ya backup yaradın
- Distribusiyanın tövsiyə etdiyi yeniləmə üsuluna əməl edin
- Xüsusilə Arch sistemlərində partial update-dən uzaq durun
Nəticə
apt, dnf və ya pacman özü sıradan çıxmış kimi görünsə də, həqiqi səbəb çox vaxt şəbəkə, lock-lar, imzalar, asılılıqlar, cache, boş yer və ya repository sazlaması olur. Ən vacibi dərhal silməyə və ya yenidən quraşdırmağa keçmək deyil, əvvəlcə log-lar vasitəsilə problemin hansı səviyyədə yarandığını anlamaqdır. Bundan sonra isə uyğun yanaşma seçilməlidir: apt üçün dpkg bərpası, dnf üçün metadata və tarixçə, pacman üçün tam sinxronizasiya və açar yoxlaması.