Linux: apt / dnf / pacman rosak — punca dan cara membaikinya

Dalam Linux, apt, dnf dan pacman ialah asas utama untuk memasang dan mengemas kini perisian. Apabila ia kelihatan “rosak”, masalahnya bukan sekadar tidak boleh memasang aplikasi baharu, tetapi juga boleh menyebabkan kemas kini keselamatan terhenti dan penyelenggaraan sistem menjadi jauh lebih sukar. Antara punca yang biasa ialah proses kemas kini yang terhenti di tengah jalan, mirror yang rosak, pangkalan data pakej yang tidak konsisten, kegagalan pengesahan tandatangan, dependencies yang rosak, atau fail lock yang tertinggal. Perkara yang paling penting bukanlah memadam cache atau konfigurasi secara melulu, tetapi memahami dahulu bahagian mana yang sebenarnya bermasalah.

Kadang-kadang ia kelihatan seperti package manager itu sendiri yang rosak, padahal punca sebenar ialah rangkaian, DNS, konfigurasi repository, atau ruang cakera yang tidak mencukupi. Oleh itu, pemeriksaan perlu dimulakan dengan membezakan sama ada masalah berpunca daripada komunikasi, repository, pangkalan data tempatan atau dependencies.

Gejala yang biasa berlaku

  • apt update, dnf update atau pacman -Syu berhenti dengan ralat
  • Muncul mesej tentang dependencies yang tidak dapat diselesaikan atau pakej yang rosak
  • Repository tidak boleh digunakan kerana ralat GPG atau tandatangan
  • Pangkalan data dikunci dan semua operasi pakej gagal
  • Mirror mengembalikan ralat 404 atau timeout
  • Selepas kemas kini terganggu, operasi pakej tidak lagi berjalan dengan betul
  • Selepas beberapa library dikemas kini, package manager sendiri tidak boleh dimulakan

Apa yang perlu diperiksa terlebih dahulu

Langkah pertama ialah memastikan sama ada masalah benar-benar datang daripada package manager, atau sebenarnya daripada rangkaian dan DNS.

ping -c 4 8.8.8.8
ping -c 4 google.com
ip addr
ip route

Jika rangkaian atau DNS sendiri sudah rosak, kegagalan apt, dnf atau pacman hanyalah kesan sampingan. Tetapi jika rangkaian biasa berfungsi dan hanya operasi pakej sahaja yang gagal, maka fokus harus diberikan kepada repository, keys, locks, cache, pangkalan data dan dependencies.

Punca umum pada apt / dnf / pacman

1. Proses kemas kini terganggu

Salah satu punca yang paling kerap berlaku ialah kemas kini yang terhenti di tengah jalan. Bekalan elektrik terputus, terminal ditutup, sesi SSH terputus atau antara muka grafik tergantung boleh meninggalkan pangkalan data pakej atau pakej yang belum dikonfigurasikan dalam keadaan separuh siap.

Dalam keadaan ini, lebih baik cuba melengkapkan keadaan yang belum selesai itu daripada terus memadam fail secara rawak.

2. Fail lock yang tertinggal

Package manager menggunakan lock untuk menghalang lebih daripada satu operasi berjalan pada masa yang sama. Jika masih ada proses lain yang aktif, atau lock tertinggal selepas crash, sistem akan mengatakan bahawa package manager sedang digunakan oleh proses lain.

Namun begitu, fail lock tidak sepatutnya dipadam secara terburu-buru. Pastikan dahulu bahawa memang tiada proses berkaitan yang masih berjalan.

ps aux | grep -E 'apt|dpkg|dnf|yum|pacman'

3. Konfigurasi repository rosak

Repository pihak ketiga, PPA lama, mirror yang sudah tidak sah, atau baki konfigurasi selepas naik taraf distribusi boleh menyebabkan sumber pakej sendiri menjadi tidak sah. Gejala biasa termasuk ralat 404, tiada Release file, atau kegagalan mendapatkan metadata.

4. Masalah GPG key atau tandatangan

Repository biasanya disahkan secara kriptografi. Jika key tamat tempoh, belum diimport, sistem pengurusan key berubah atau keyring tempatan rosak, package manager akan berhenti atas sebab keselamatan.

5. Dependencies rosak

Dependencies sering rosak apabila pengguna memaksa pemasangan versi pakej yang tidak serasi, mencampurkan beberapa repository, melakukan partial upgrade, atau menimpa library sistem secara manual. Dalam sistem pacman, partial upgrade amat tidak digalakkan, tetapi apt dan dnf juga mudah menjadi tidak stabil jika sumber dicampur secara tidak terkawal.

6. Cache atau metadata rosak

Pakej yang dimuat turun separuh jalan, metadata lama, atau pangkalan data penyegerakan yang rosak boleh menghalang senarai pakej daripada dibaca dengan betul atau menyebabkan pemasangan gagal.

7. Ruang cakera tidak mencukupi

Satu lagi punca yang sangat biasa tetapi sering diabaikan ialah kekurangan ruang kosong. Jika partisi seperti /var atau /boot sudah penuh, proses ekstrak dan penulisan fail boleh gagal di tengah jalan lalu meninggalkan keadaan pakej yang rosak.

df -h
du -sh /var/cache/* 2>/dev/null

Apa yang perlu diperiksa apabila apt rosak

Dalam sistem Debian / Ubuntu, bukan hanya apt yang perlu diperiksa, tetapi juga keadaan dpkg di lapisan bawahnya.

Membaiki pakej yang belum selesai dikonfigurasi

sudo dpkg --configure -a
sudo apt --fix-broken install

Selepas kemas kini yang terganggu, dua arahan ini biasanya merupakan langkah pemulihan paling awal.

Mengambil semula senarai pakej

sudo apt update

Jika di sini muncul ralat 404, tandatangan atau Release file, maka /etc/apt/sources.list dan /etc/apt/sources.list.d/ perlu diperiksa.

Membersihkan cache

sudo apt clean
sudo apt autoclean

Jika masalah berpunca daripada cache yang rosak atau terlalu lama, pembersihan boleh membantu.

Apa yang perlu diperiksa apabila dnf rosak

Dalam sistem Fedora / RHEL, perhatian utama biasanya diberikan kepada metadata, sejarah transaksi dan konfigurasi repository.

Membina semula metadata

sudo dnf clean all
sudo dnf makecache

Jika maklumat mirror atau metadata rosak, langkah ini selalunya membantu.

Memeriksa dependencies dan konsistensi sistem

sudo dnf check
sudo dnf distro-sync

Ini membantu memeriksa sama ada sistem masih berada dalam keadaan yang konsisten dengan pakej rasmi distribusi.

Melihat sejarah transaksi

sudo dnf history
sudo dnf history info last

Sejarah ini biasanya membantu mengenal pasti kemas kini atau transaksi mana yang mula menimbulkan masalah.

Apa yang perlu diperiksa apabila pacman rosak

Dalam Arch Linux, pangkalan data penyegerakan, keys, mirrors dan partial upgrade perlu diberi perhatian khas.

Menyegerakkan semula pangkalan data

sudo pacman -Syy

Jika pangkalan data penyegerakan tempatan tidak lagi sepadan dengan repository, ini selalunya langkah pertama yang sesuai.

Melakukan kemas kini penuh

sudo pacman -Syu

Dalam Arch, partial upgrade perlu dielakkan. Mengemas kini hanya sebahagian pakej sambil membiarkan yang lain kekal lama adalah salah satu punca utama sistem menjadi tidak konsisten.

Memeriksa masalah keys

sudo pacman-key --init
sudo pacman-key --populate

Jika masalah berkaitan tandatangan atau keyring, pembinaan semula keychain mungkin diperlukan.

Log sangat penting

Dalam kes ralat package manager, satu baris mesej terakhir selalunya tidak mencukupi. Hanya log dan output terperinci boleh menunjukkan sama ada masalah berpunca daripada tandatangan, dependencies, rangkaian atau pangkalan data.

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

Turutan pemeriksaan yang praktikal

Langkah 1: Periksa rangkaian dan DNS

ping -c 4 8.8.8.8
ping -c 4 google.com

Langkah 2: Periksa ruang cakera

df -h

Langkah 3: Periksa proses dan lock

ps aux | grep -E 'apt|dpkg|dnf|yum|pacman'

Langkah 4: Baca log

Pertama sekali, fahami operasi terakhir yang benar-benar gagal.

Langkah 5: Gunakan arahan pemulihan yang sesuai dengan distribusi

Untuk apt, biasanya bermula dengan dpkg --configure -a, untuk dnf dengan pembersihan metadata, dan untuk pacman dengan penyegerakan penuh serta semakan keys.

Apa yang tidak patut dilakukan

  • Memadam fail lock tanpa memahami puncanya
  • Memasang fail .deb / .rpm / pakej lain daripada sumber yang tidak boleh dipercayai
  • Melakukan partial upgrade berulang kali dalam Arch
  • Mencampurkan apt dengan dpkg, dnf dengan rpm, atau pacman dengan penggantian fail manual secara tidak teratur
  • Mematikan pengesahan tandatangan tanpa memahami ralat sebenar

Bagaimana mengelakkan masalah ini berulang

  • Elakkan gangguan elektrik atau penghentian paksa semasa kemas kini
  • Jangan tambah terlalu banyak repository pihak ketiga
  • Buat snapshot atau backup sebelum kemas kini besar
  • Ikuti kaedah kemas kini yang disyorkan oleh distribusi
  • Terutamanya dalam Arch, elakkan partial upgrade

Kesimpulan

Walaupun nampak seperti apt, dnf atau pacman itu sendiri yang rosak, punca sebenarnya selalunya terletak pada rangkaian, locks, tandatangan, dependencies, cache, ruang cakera atau konfigurasi repository. Yang paling penting ialah jangan terus memadam atau memasang semula secara rawak, tetapi fahami dahulu melalui log pada lapisan mana kegagalan itu berlaku. Selepas itu, gunakan pendekatan yang betul mengikut jenis sistem: pembaikan dpkg untuk apt, semakan metadata dan sejarah untuk dnf, serta penyegerakan penuh dan semakan keys untuk pacman.

Leave a Reply

Alamat e-mel anda tidak akan disiarkan. Medan diperlukan ditanda dengan *