Memperbaiki Partial Upgrade Error di Arch Linux
Ketika aplikasi mendadak kehilangan library, pacman dipenuhi konflik versi, atau sistem berhenti saat boot, penyebabnya sering bukan paket yang “nakal”, melainkan kondisi sistem yang diperbarui setengah jalan.
Arch Linux menggunakan model rolling release. Tidak ada lompatan versi besar seperti “edisi tahun ini” menuju “edisi tahun depan”. Paket bergerak terus, dan setiap pembaruan dirancang agar seluruh komponen sistem mengikuti kumpulan versi yang sama.
Masalah muncul ketika database repositori sudah diperbarui, tetapi paket yang terpasang tidak ikut diperbarui secara menyeluruh. Sistem akhirnya berisi campuran paket lama dan baru. Sebuah aplikasi dapat meminta versi library terbaru, sementara library yang tersedia masih versi lama. Bisa juga kebalikannya: library sudah baru, tetapi aplikasi yang memakainya masih tertinggal.
Kondisi tersebut dikenal sebagai partial upgrade. Arch Linux tidak mendukung pola pembaruan sebagian karena hubungan antar-paketnya sangat rapat. Kabar baiknya, selama database pacman dan media penyimpanan masih sehat, sebagian besar kasus dapat dipulihkan tanpa memasang ulang sistem.

Mengenali Masalah Sebelum Menjalankan Perintah
Gejalanya tidak selalu berupa pesan yang secara terang-terangan menyebut partial upgrade. Masalah lebih sering muncul sebagai efek samping: aplikasi menolak dibuka, desktop tidak berhasil dimuat, atau pacman mengeluhkan dependensi yang seharusnya tersedia.
- Aplikasi berhenti dengan pesan
error while loading shared librariesataulibrary not found. - Pacman menemukan dependensi dengan versi yang tidak cocok.
- Pembaruan gagal karena paket A membutuhkan library baru, sedangkan paket B masih mempertahankan versi lama.
- Lingkungan desktop, display manager, atau layanan sistem berhenti setelah pembaruan terputus.
- Kernel telah diperbarui, tetapi initramfs atau modul yang diperlukan belum terbentuk dengan benar.
- Sistem gagal boot setelah hanya sebagian transaksi pembaruan selesai.
Nama paket yang tampil belum tentu menjadi sumber masalah. Ia bisa sekadar komponen pertama yang menyadari bahwa versi library di dalam sistem sudah tidak selaras.
Penyebab Partial Upgrade yang Paling Sering Terjadi
Menjalankan pacman -Sy tanpa melanjutkan upgrade
Perintah pacman -Sy hanya menyegarkan database repositori. Paket di sistem tidak ikut diperbarui. Sesudah itu, pemasangan satu paket dengan pacman -S nama-paket dapat menarik paket baru yang dibangun untuk ekosistem terbaru, lalu memasukkannya ke sistem yang sebagian besar masih lama.
Jika baru saja menjalankan pacman -Sy dan belum memasang apa pun, lanjutkan dengan full system upgrade sebelum melakukan transaksi paket lainnya:
sudo pacman -SyuTransaksi pembaruan terputus
Koneksi internet yang putus biasanya tidak langsung merusak sistem karena pacman mengunduh paket sebelum memasangnya. Risiko lebih besar muncul ketika komputer mati, ruang penyimpanan habis, proses dihentikan paksa, atau terjadi kegagalan ketika transaksi sudah memasuki tahap pemasangan.
Periksa ruang kosong sebelum mencoba lagi:
df -h /
df -h /var/cache/pacman/pkgMencampur repositori stable dan testing
Repositori testing bukan sekadar tempat mengambil satu paket yang lebih baru. Paket di dalamnya diuji sebagai satu rangkaian. Mengaktifkan core-testing tetapi tetap mengambil komponen terkait dari cabang stable dapat menghasilkan susunan versi yang tidak sesuai.
Hal serupa dapat terjadi pada repositori pihak ketiga yang terlambat membangun ulang paket setelah library resmi mengalami perubahan ABI atau soname.
Menahan paket terlalu lama
Pengaturan IgnorePkg atau IgnoreGroup dapat membantu untuk kebutuhan sementara, tetapi pemakaian jangka panjang membuat paket tertentu tertinggal dari dependensinya. Menahan kernel, driver grafis, Mesa, glibc, systemd, atau komponen desktop tanpa memahami hubungan versinya dapat berakhir menjadi partial upgrade.
Paket AUR belum dibangun ulang
Paket AUR tidak dikelola oleh repositori resmi. Setelah library utama diperbarui, paket AUR yang ditautkan ke versi library lama mungkin harus dibangun ulang. Dalam kasus ini, paket resmi sudah konsisten, tetapi aplikasi dari AUR masih mencari berkas library yang sudah tidak tersedia.
pacman -QmPerintah tersebut menampilkan paket asing, yaitu paket yang tidak ditemukan dalam database repositori aktif. Daftar itu perlu ditinjau setelah pembaruan sistem selesai.
Jalur Pemulihan untuk Sistem yang Masih Bisa Boot
Jika terminal masih dapat digunakan dan pacman masih berjalan, mulailah dari langkah paling sederhana. Jangan menghapus database, jangan membersihkan seluruh cache, dan jangan memakai opsi pemaksa sebelum mengetahui masalah sebenarnya.
- Pastikan koneksi internet dan ruang penyimpanan mencukupi.
- Periksa konfigurasi repositori.
- Jalankan full system upgrade.
- Periksa konsistensi database dan berkas paket.
- Pasang ulang hanya paket yang terbukti rusak.
- Bangun ulang initramfs jika pembaruan menyentuh kernel atau proses boot.
Langkah Pemulihan Aman dengan Pacman
Periksa repositori yang sedang aktif
Tampilkan konfigurasi pacman tanpa komentar dan baris kosong:
grep -Ev '^[[:space:]]*(#|$)' /etc/pacman.confPerhatikan nama repositori, urutannya, serta baris Include. Jika tidak sengaja mencampur testing dan stable, tentukan cabang yang ingin dipakai lalu rapikan konfigurasi sebelum melanjutkan.
Pengguna cabang stable pada umumnya cukup memakai repositori resmi stable. Pengguna testing harus mengikuti susunan repositori testing secara konsisten, bukan mengambil satu bagian secara acak.
Jalankan full system upgrade
Perintah standar untuk menyegarkan database dan memperbarui seluruh paket adalah:
sudo pacman -SyuOpsi -S menjalankan operasi sinkronisasi, -y mengambil database repositori terbaru, dan -u memperbarui semua paket yang tertinggal. Inilah kombinasi yang seharusnya digunakan untuk pembaruan rutin.
Jika database lokal diduga rusak, mirror baru saja diganti, atau pacman terus memakai database yang tidak sesuai, sinkronisasi dapat dipaksa satu kali dengan:
sudo pacman -Syyu-Syyu mengunduh ulang seluruh database meskipun salinan lokal dianggap masih baru. Untuk pembaruan normal, -Syu sudah cukup dan lebih hemat lalu lintas mirror.
Ketika kembali dari testing menuju stable
Sesudah repositori testing dinonaktifkan dengan benar, sebagian paket lokal mungkin memiliki versi lebih tinggi daripada paket stable. Dalam situasi khusus ini, pacman perlu diizinkan melakukan downgrade:
sudo pacman -SyyuuDua huruf u mengizinkan pacman memilih versi repositori walaupun versinya lebih rendah daripada paket lokal. Baca daftar transaksi dengan teliti sebelum menyetujuinya. Perintah ini bukan pengganti -Syu untuk pemakaian rutin.
Periksa konsistensi database paket
Setelah transaksi selesai, periksa apakah database lokal masih memiliki dependensi hilang, konflik, atau kepemilikan berkas yang tidak konsisten:
sudo pacman -DkPemeriksaan yang melibatkan ketersediaan dependensi pada database sinkronisasi dapat dilakukan dengan:
sudo pacman -DkkPeriksa berkas milik paket
Pacman juga dapat memeriksa apakah berkas yang tercatat sebagai milik paket masih tersedia:
pacman -QkUntuk pemeriksaan lebih rinci terhadap ukuran, izin, dan metadata paket yang menyediakan berkas mtree, gunakan:
pacman -QkkBeberapa perubahan berkas konfigurasi memang disengaja, sehingga keluaran -Qkk perlu dibaca berdasarkan konteks. Fokuslah pada berkas program atau library yang benar-benar hilang.
Pasang ulang paket yang rusak
Sesudah full upgrade berhasil dan nama paket yang bermasalah sudah diketahui, pasang ulang paket tersebut dari repositori yang kini telah sinkron:
sudo pacman -S nama-paketGanti nama-paket dengan paket sebenarnya. Jangan memakai --overwrite '*' secara membabi buta. Opsi overwrite dapat menutupi konflik kepemilikan berkas tanpa memperbaiki akar masalah.
Memulihkan Sistem yang Gagal Boot
Masuk melalui Arch Linux live USB
Jika sistem tidak mencapai terminal, boot menggunakan media instalasi Arch Linux. Hubungkan jaringan, identifikasi partisi, lalu mount partisi root ke /mnt.
lsblk -f
mount /dev/nama-partisi-root /mntJika direktori boot atau EFI berada pada partisi terpisah, mount partisi tersebut sesuai struktur sistem. Lokasinya dapat berupa /mnt/boot atau /mnt/boot/efi.
mount /dev/nama-partisi-efi /mnt/bootContoh di atas hanyalah pola. Jangan menyalin nama perangkat secara mentah karena setiap komputer memiliki susunan partisi berbeda.
Masuk ke sistem terpasang
arch-chroot /mntSesudah masuk, periksa konfigurasi repositori lalu jalankan full system upgrade:
pacman -SyuPasang ulang kernel yang digunakan
Periksa paket kernel resmi yang terpasang:
pacman -Q | grep -E '^linux(|-lts|-zen|-hardened) 'Pasang ulang kernel yang benar. Contoh berikut berlaku untuk kernel standar:
pacman -S linuxPengguna linux-lts, linux-zen, atau linux-hardened harus memakai nama paket kernel yang sesuai dengan sistemnya.
Bangun ulang seluruh initramfs
mkinitcpio -POpsi -P memproses seluruh preset yang tersedia di /etc/mkinitcpio.d/. Langkah ini relevan ketika pembaruan kernel, modul penyimpanan, enkripsi, atau konfigurasi initramfs sempat terputus.
Setelah semua perintah selesai tanpa error:
exit
umount -R /mnt
rebootKetika arch-chroot tidak dapat dijalankan
Jika library inti pada sistem target rusak sampai arch-chroot tidak bisa memulai shell, pacman dari lingkungan live dapat diarahkan ke sistem yang telah di-mount:
pacman --sysroot /mnt -SyuOpsi --sysroot dirancang untuk mengoperasikan sistem pada root alternatif. Periksa kembali mount partisi dan konfigurasi jaringan sebelum menjalankannya.
Perintah yang Sebaiknya Tidak Dipakai sebagai Obat Instan
Mengubah semua orphan menjadi dependency
Perintah berikut kadang beredar sebagai cara “membangun ulang database”:
sudo pacman -D --asdeps $(pacman -Qdtq)Perintah tersebut tidak membangun ulang database dan tidak memperbaiki versi paket. Opsi --asdeps hanya mengubah alasan pemasangan paket menjadi “dipasang sebagai dependensi”. Paket yang ditampilkan oleh pacman -Qdtq pada umumnya memang sudah berstatus dependency yang tidak lagi diperlukan.
Membersihkan orphan boleh dilakukan setelah sistem kembali konsisten, tetapi itu merupakan pekerjaan pemeliharaan terpisah:
orphans=$(pacman -Qdtq)
if [ -n "$orphans" ]; then
sudo pacman -Rns $orphans
fiMenghapus seluruh cache dengan pacman -Scc
pacman -Scc menghapus seluruh paket dari cache, termasuk versi lama yang mungkin berguna untuk pemulihan. Membersihkan cache tidak menyelaraskan versi paket dan tidak memperbaiki dependensi.
Jangan membersihkan cache ketika sistem masih bermasalah. Setelah sistem sehat, pengguna paket pacman-contrib dapat mempertahankan beberapa versi terbaru dengan:
sudo paccache -rMelewati pemeriksaan dependensi
Opsi seperti -d, -dd, atau penghapusan rekursif agresif dapat membuat pacman berhenti mengingatkan adanya hubungan paket yang rusak. Pesan error mungkin hilang, tetapi sistem justru menjadi lebih sulit dipulihkan.
Jangan menghapus isi /var/lib/pacman/local, jangan memakai --dbonly, dan jangan memaksa overwrite massal kecuali kamu benar-benar memahami perubahan yang sedang dilakukan.
Diagnosis Berdasarkan Pesan Error
| Gejala | Kemungkinan penyebab | Langkah awal |
|---|---|---|
library not found | Aplikasi dan library berada pada versi berbeda, atau paket AUR belum dibangun ulang. | Jalankan pacman -Syu, lalu periksa paket asing dengan pacman -Qm. |
| Dependensi meminta versi yang tidak tersedia | Database mirror tidak sinkron, repo tercampur, atau ada paket yang ditahan. | Periksa pacman.conf, mirror, IgnorePkg, lalu lakukan full upgrade. |
| Konflik berkas saat upgrade | Berkas tidak dimiliki paket, paket pihak ketiga bentrok, atau transaksi lama tidak selesai. | Cari pemilik berkas dan baca berita Arch sebelum memakai opsi overwrite. |
| Kernel ditemukan tetapi root filesystem gagal dibuka | Initramfs tidak lengkap, hook berubah, atau modul penyimpanan tidak masuk. | Boot live USB, masuk ke sistem, lalu jalankan mkinitcpio -P. |
| Pacman sendiri tidak dapat berjalan | Library inti atau pacman rusak akibat transaksi terputus. | Gunakan live USB dan jalankan pacman melalui --sysroot. |
Baca catatan transaksi terakhir
Pacman menyimpan riwayat pemasangan dan pembaruan di /var/log/pacman.log. Baris terakhir sering menunjukkan paket yang sedang diproses ketika masalah terjadi.
tail -n 100 /var/log/pacman.logUntuk mencari transaksi upgrade terakhir:
grep '\[ALPM\] upgraded' /var/log/pacman.log | tail -n 50Catatan ini membantu menentukan apakah transaksi berhenti setelah kernel diperbarui, sesudah library inti diganti, atau ketika paket pihak ketiga sedang dipasang.
Mencegah Partial Upgrade Terulang
Gunakan satu transaksi yang lengkap
Untuk pembaruan rutin, gunakan:
sudo pacman -SyuJika ingin memasang paket baru sekaligus memperbarui sistem, target paket dapat ditambahkan pada transaksi yang sama:
sudo pacman -Syu nama-paketDengan pola ini, paket baru dipasang bersama kumpulan dependensi terbaru, bukan dimasukkan ke sistem yang masih menggunakan database atau library lama.
Baca Arch Linux News sebelum pembaruan besar
Sesekali pembaruan membutuhkan intervensi manual, misalnya perubahan format konfigurasi, penggantian paket, atau migrasi komponen sistem. Pengumuman tersebut diterbitkan melalui Arch Linux News.
Jangan memperbarui saat kondisi tidak mendukung
Hindari pembaruan besar ketika baterai hampir habis, koneksi sangat tidak stabil, atau partisi root tinggal menyisakan sedikit ruang. Pastikan proses dapat selesai tanpa dimatikan paksa.
Tinjau berkas pacnew
Pembaruan paket dapat menghasilkan berkas konfigurasi dengan akhiran .pacnew. Berkas tersebut tidak selalu harus menggantikan konfigurasi lama, tetapi perlu dibandingkan dan digabungkan agar layanan tetap kompatibel dengan versi terbaru.
Rawat paket AUR secara terpisah
Selesaikan pembaruan paket resmi terlebih dahulu. Setelah itu, bangun ulang paket AUR yang bergantung pada library yang berubah. Jangan menganggap AUR sebagai repositori resmi yang selalu bergerak serempak dengan Arch Linux.
Simpan cache dan cadangan yang masuk akal
Beberapa versi paket lama di cache dapat membantu ketika pembaruan tertentu harus dibatalkan. Untuk kondisi yang lebih rumit, Arch Linux Archive menyediakan snapshot repositori berdasarkan tanggal.
Rollback melalui arsip harus dilakukan secara konsisten terhadap seluruh repositori pada tanggal yang sama. Mengambil satu paket lama dari snapshot lalu mencampurnya dengan sistem terbaru dapat menciptakan partial upgrade dalam arah sebaliknya.
Kesimpulan
Partial upgrade bukan sekadar satu paket yang gagal diperbarui. Ia adalah keadaan ketika kumpulan versi di dalam Arch Linux tidak lagi selaras. Karena itu, jalan keluarnya bukan menghapus paket secara acak, melainkan mengembalikan sistem ke satu keadaan repositori yang konsisten.
Pada sistem yang masih dapat boot, sudo pacman -Syu biasanya menjadi langkah utama. -Syyu hanya diperlukan ketika database perlu dipaksa sinkron ulang, sedangkan -Syyuu digunakan dalam situasi khusus ketika berpindah dari testing menuju stable dan membutuhkan downgrade.
Jika sistem gagal boot, media instalasi Arch Linux, arch-chroot, pacman --sysroot, dan mkinitcpio -P menyediakan jalur pemulihan yang jauh lebih aman daripada merusak database paket. Baca setiap transaksi sebelum menyetujuinya—pacman memang cepat, tetapi bukan pembaca pikiran.
Segarkan database dan paket dalam satu transaksi, jaga repositori tetap konsisten, serta jangan membersihkan cache pemulihan ketika sistem belum benar-benar sehat.