Memperbaiki Error GLIBC Version Too Old di Arch Linux
Ketika Bash, pacman, desktop, atau aplikasi lain mendadak menolak berjalan karena versi GLIBC tidak ditemukan, jangan buru-buru menyalin file libc secara manual. Sistem masih bisa dipulihkan secara rapi melalui live ISO dan transaksi paket yang konsisten.
GNU C Library atau GLIBC adalah salah satu fondasi utama sistem Linux. Banyak program—mulai dari shell, utilitas terminal, layanan sistem, sampai aplikasi desktop—membutuhkan fungsi yang disediakan oleh library ini. Karena posisinya sangat mendasar, ketidakcocokan satu versi GLIBC dapat membuat banyak program tumbang secara bersamaan.
Pesan seperti GLIBC_2.38 not found tidak selalu berarti Arch Linux membutuhkan GLIBC yang lebih tua. Pesan tersebut justru biasanya menunjukkan bahwa sebuah program dibangun untuk memakai simbol GLIBC tertentu, tetapi runtime loader menemukan salinan libc yang lebih lama atau tidak sesuai.
Penyebabnya dapat berupa pembaruan sistem yang terputus, partial upgrade, library dari direktori khusus yang mengambil alih library resmi, lingkungan chroot lama, atau paket hasil kompilasi yang berasal dari sistem lebih baru. Perbaikannya harus mengembalikan seluruh komponen ke satu kumpulan versi yang konsisten—bukan sekadar menimpa semua file yang kebetulan terlihat mencurigakan.

Memahami Arti Pesan Error
Dua pesan berikut terlihat mirip, tetapi petunjuknya sedikit berbeda:
/usr/bin/bash: /usr/lib/libc.so.6: version `GLIBC_2.38' not found
symbol lookup error: undefined symbol: __memcpy_chk, version GLIBC_2.38Pesan pertama berarti program meminta versi simbol bernama GLIBC_2.38, tetapi library yang sedang dimuat tidak menyediakan versi tersebut. Pesan kedua berarti proses menemukan library, tetapi sebuah simbol yang dibutuhkan tidak tersedia dalam bentuk atau versi yang diharapkan.
Nomor setelah kata GLIBC adalah symbol version, bukan sekadar nomor paket yang boleh diselesaikan dengan mengganti nama file. Binary dan library dapat tetap memiliki nama yang sama, tetapi isi serta daftar simbolnya berbeda.
Menyalin satu file GLIBC dari distribusi lain dapat membuat dynamic loader, library pendukung, database paket, dan program inti semakin tidak sinkron. Kesalahan kecil di sini bisa membuat hampir semua perintah berhenti berjalan.
Penyebab yang Paling Sering Ditemukan
Pembaruan berhenti ketika paket inti sedang dipasang
Pemadaman listrik, ruang penyimpanan penuh, sistem dimatikan paksa, atau kegagalan media dapat menghentikan transaksi ketika sebagian file GLIBC sudah diganti dan sebagian lainnya belum. Database pacman mungkin mencatat versi baru, sementara beberapa file masih berasal dari versi sebelumnya.
Koneksi internet yang putus saat tahap unduhan belum tentu merusak sistem. Risiko lebih besar muncul jika transaksi sudah memasuki tahap instalasi paket, lalu proses dihentikan sebelum selesai.
Partial upgrade setelah pacman -Sy
Arch Linux hanya mendukung full system upgrade. Menjalankan pacman -Sy memperbarui database repositori tanpa memperbarui seluruh paket yang terpasang. Pemasangan satu paket baru setelah itu dapat mempertemukan binary baru dengan GLIBC lama.
Pedoman resmi mengenai kondisi ini tersedia pada bagian partial upgrades are unsupported di ArchWiki.
LD_LIBRARY_PATH atau LD_PRELOAD mengarahkan ke library lama
Aplikasi komersial, SDK, game, perangkat lunak ilmiah, atau skrip buatan sendiri kadang menambahkan direktori khusus ke LD_LIBRARY_PATH. Jika direktori tersebut berisi salinan libc.so.6, libpthread.so.0, atau library inti lain, program dapat memuat versi yang salah meskipun paket resmi Arch sebenarnya sehat.
env | grep -E '^(LD_LIBRARY_PATH|LD_PRELOAD)='Jika shell utama sudah tidak bisa dijalankan, pemeriksaan harus dilakukan dari live ISO dengan meninjau konfigurasi di partisi sistem, bukan memaksa menjalankan binary yang sedang rusak.
Chroot, container, atau image sistem tidak sinkron
Binary dari host yang lebih baru tidak seharusnya dijalankan memakai library milik chroot yang lebih lama. Kebalikannya juga berlaku. Seluruh userspace di dalam chroot atau container perlu diperbarui sebagai satu sistem tersendiri.
Paket AUR atau binary portabel dibangun di sistem lebih baru
Paket yang dikompilasi pada sistem dengan GLIBC lebih baru dapat meminta symbol version yang belum tersedia pada mesin tujuan. Dalam kasus ini, GLIBC sistem belum tentu rusak. Binary tersebut mungkin perlu dibangun ulang langsung pada sistem target atau dipasang melalui paket yang sesuai dengan repositori aktif.
Library 32-bit belum ikut diperbarui
Pada sistem multilib, aplikasi 64-bit memakai paket glibc, sedangkan aplikasi 32-bit menggunakan lib32-glibc. Jika hanya aplikasi 32-bit seperti game atau Wine yang gagal, periksa keselarasan paket multilib sebelum menyentuh GLIBC utama.
Urutan Pemulihan yang Disarankan
- Hentikan percobaan overwrite massal atau penyalinan file library manual.
- Boot memakai Arch Linux ISO terbaru.
- Mount partisi root serta partisi boot atau EFI yang terpisah.
- Coba masuk dengan
arch-chroot. - Jika chroot gagal, operasikan sistem target memakai
pacman --sysrootdari live ISO. - Reinstall GLIBC bersama full system upgrade.
- Regenerasi cache dynamic linker.
- Periksa integritas paket, initramfs, dan library custom sebelum reboot.
Memulihkan Sistem Melalui Live ISO
Boot menggunakan media instalasi terbaru
Gunakan flashdisk Arch Linux ISO resmi yang masih baru. Live environment menyediakan pacman, alat mount, utilitas jaringan, dan library sehat yang dapat digunakan untuk memperbaiki sistem terpasang.
Setelah masuk ke terminal live, identifikasi partisi:
lsblk -fPerhatikan tipe filesystem, label, UUID, serta lokasi partisi root. Jangan menyalin nama perangkat dari contoh artikel secara mentah karena susunan disk setiap komputer berbeda.
Mount partisi root
mount /dev/nama-partisi-root /mntJika sistem memakai subvolume Btrfs, mount subvolume root yang benar. Contoh berikut hanya menggambarkan pola umum:
mount -o subvol=@ /dev/nama-partisi-btrfs /mntMount partisi boot atau EFI
Mount semua filesystem yang diperlukan oleh sistem sebelum melakukan full upgrade. Lokasi mount dapat berbeda antara instalasi yang satu dan lainnya.
mount /dev/nama-partisi-efi /mnt/bootJika partisi EFI biasanya dipasang di /boot/efi, buat dan gunakan lokasi tersebut:
mkdir -p /mnt/boot/efi
mount /dev/nama-partisi-efi /mnt/boot/efiPanduan umum mengenai lingkungan chroot dapat dibaca pada dokumentasi Chroot di ArchWiki.
Coba masuk dengan arch-chroot
arch-chroot /mntJika perintah berhasil dan shell di dalam sistem target berjalan normal, lanjutkan perbaikan dari dalam chroot. Jika muncul error GLIBC lagi, keluar dari percobaan tersebut dan gunakan metode --sysroot.
Metode Pertama: Chroot Masih Bisa Digunakan
Periksa ruang penyimpanan
df -h /
df -h /var/cache/pacman/pkgPastikan partisi root memiliki ruang cukup untuk mengunduh dan mengekstrak paket. GLIBC memang tidak terlalu besar, tetapi full upgrade dapat melibatkan kernel, desktop, browser, dan paket lain.
Periksa konfigurasi repositori
grep -Ev '^[[:space:]]*(#|$)' /etc/pacman.confPastikan repositori stable tidak tercampur sembarangan dengan testing. Tinjau juga IgnorePkg, repositori pihak ketiga, dan konfigurasi mirror.
Reinstall GLIBC sambil menyelesaikan full upgrade
pacman -Syu glibc gcc-libsPenambahan glibc dan gcc-libs sebagai target eksplisit membuat pacman memasang ulang paket tersebut sambil tetap menyelaraskan seluruh sistem. Langkah ini lebih aman daripada memasang GLIBC sendirian pada sistem yang sudah mengalami partial upgrade.
Jika database repositori diduga tidak sinkron setelah pergantian mirror, paksa penyegaran satu kali:
pacman -Syyu glibc gcc-libsDua huruf y memaksa pengunduhan ulang database repositori. Untuk pemakaian normal, pacman -Syu sudah cukup.
Perbarui paket multilib bila digunakan
Jika repositori multilib aktif dan aplikasi 32-bit ikut bermasalah:
pacman -Syu lib32-glibc lib32-gcc-libsRegenerasi cache dynamic linker
ldconfigProgram ldconfig memperbarui link dan cache library berdasarkan direktori yang telah dikonfigurasi. File executable ldconfig sendiri disediakan oleh paket GLIBC.
Periksa paket yang baru dipulihkan
pacman -Q glibc gcc-libs
pacman -Qkk glibc gcc-libs
pacman -Dkpacman -Qkk memeriksa file paket secara lebih rinci, sedangkan pacman -Dk memeriksa konsistensi database lokal dan dependensi.
Metode Kedua: arch-chroot Gagal karena GLIBC Rusak
Gunakan pacman milik live ISO
Jika Bash atau dynamic loader di sistem target rusak, arch-chroot tidak dapat menjalankan binary dari partisi tersebut. Dalam keadaan ini, gunakan pacman sehat milik live ISO dan arahkan seluruh operasinya ke sistem yang telah di-mount:
pacman --sysroot /mnt -Syu glibc gcc-libsOpsi --sysroot memang disediakan untuk mengoperasikan sistem tamu yang terpasang pada lokasi lain. Berbeda dengan sekadar mengganti root instalasi, sysroot juga menyesuaikan jalur konfigurasi dan database sistem target.
Penjelasan opsi ini tersedia pada manual pacman.
Paksa sinkronisasi database hanya jika diperlukan
pacman --sysroot /mnt -Syyu glibc gcc-libsGunakan bentuk ini bila database repositori di sistem target jelas rusak, sangat lama, atau tidak sesuai setelah perubahan mirror. Jangan menambahkan opsi lain hanya karena transaksi pertama menampilkan pesan yang belum dipahami.
Regenerasi cache linker dari live environment
ldconfig -r /mntOpsi -r meminta ldconfig bekerja menggunakan direktori lain sebagai root. Dengan demikian, cache yang diperbarui adalah milik sistem di /mnt, bukan cache live ISO.
Periksa kepemilikan file GLIBC
pacman --sysroot /mnt -Qo /usr/lib/libc.so.6
pacman --sysroot /mnt -Qo /usr/lib/ld-linux-x86-64.so.2Kedua jalur tersebut seharusnya tercatat sebagai bagian dari paket resmi GLIBC. Informasi paket GLIBC terkini dapat diperiksa pada halaman paket resmi Arch Linux.
Uji kembali lingkungan chroot
arch-chroot /mnt /usr/bin/bash -lc 'ldd --version; pacman -Q glibc gcc-libs'Jika perintah ini berhasil, dynamic loader, Bash, dan pacman di sistem target sudah dapat dijalankan kembali. Lanjutkan pemeriksaan konfigurasi serta initramfs sebelum reboot.
Pemulihan Offline dari Cache Pacman
Cari paket yang masih tersimpan
Jika koneksi internet tidak tersedia, cache lokal dapat menjadi penyelamat. Dari live ISO, tampilkan paket GLIBC yang masih ada:
ls -1t /mnt/var/cache/pacman/pkg/glibc-*.pkg.tar.zst
ls -1t /mnt/var/cache/pacman/pkg/gcc-libs-*.pkg.tar.zstPilih versi terbaru yang tersedia dan berasal dari transaksi yang sama atau periode repositori yang sejalan. Hindari mencampur GLIBC baru dengan gcc-libs yang terlalu lama jika cache menyediakan pasangan yang lebih cocok.
Pasang paket cache melalui sysroot
pacman --sysroot /mnt -U \
/mnt/var/cache/pacman/pkg/glibc-VERSI-x86_64.pkg.tar.zst \
/mnt/var/cache/pacman/pkg/gcc-libs-VERSI-x86_64.pkg.tar.zstGanti nama file contoh dengan nama paket sebenarnya. Jangan mengetik kata VERSI secara literal lalu berharap pacman memahami isi hati pengguna.
Perbarui cache library
ldconfig -r /mntSelesaikan full upgrade setelah jaringan tersedia
Pemulihan dari cache bertujuan membuat shell dan pacman dapat berjalan kembali. Setelah koneksi tersedia, sistem tetap harus diselaraskan dengan repositori:
pacman --sysroot /mnt -SyuMemasang GLIBC lama dapat membantu pemulihan darurat, tetapi sistem rolling release harus dikembalikan ke satu snapshot repositori yang konsisten sebelum digunakan normal.
Mendeteksi Library Custom yang Mengambil Alih GLIBC
Periksa konfigurasi dynamic linker
Dari live ISO, lihat konfigurasi utama dan berkas tambahan:
cat /mnt/etc/ld.so.conf
find /mnt/etc/ld.so.conf.d -maxdepth 1 -type f -name '*.conf' -printDirektori seperti /usr/local/lib, lokasi SDK, atau folder aplikasi vendor perlu diperiksa apabila berisi library inti yang seharusnya berasal dari paket resmi.
Cari salinan libc yang tidak lazim
find /mnt/opt /mnt/usr/local /mnt/home \
-type f \( -name 'libc.so.6' -o -name 'ld-linux-x86-64.so.2' \) \
2>/dev/nullSalinan GLIBC di dalam SDK atau runtime mandiri belum tentu salah. Masalah muncul jika direktori tersebut dimasukkan secara global ke LD_LIBRARY_PATH, LD_PRELOAD, atau konfigurasi ld.so.conf.
Periksa pengaturan lingkungan sistem
grep -RnsE 'LD_LIBRARY_PATH|LD_PRELOAD' \
/mnt/etc/environment \
/mnt/etc/profile \
/mnt/etc/profile.d \
/mnt/etc/systemd/system \
2>/dev/nullHapus atau batasi konfigurasi global yang memaksa seluruh sistem memakai library milik satu aplikasi. Aplikasi yang membutuhkan runtime khusus lebih aman dijalankan melalui wrapper lokal, container, atau mekanisme bundling yang tidak mengganti library inti sistem.
Periksa kebutuhan simbol sebuah binary
Utilitas readelf dari live ISO dapat digunakan tanpa menjalankan binary target:
readelf --version-info /mnt/usr/bin/bash | grep GLIBC_
readelf --version-info /mnt/usr/lib/libc.so.6 | grep GLIBC_2.38Pemeriksaan ini membantu membedakan binary yang meminta symbol version tertentu dengan library yang benar-benar menyediakan atau tidak menyediakan simbol tersebut.
Tentang Opsi Overwrite dan Kernel
Hindari --overwrite '*'
Perintah seperti berikut terlihat praktis, tetapi terlalu luas:
pacman -S glibc gcc-libs --overwrite '*'
pacman -Syu --overwrite '*'Opsi --overwrite melewati pemeriksaan konflik file untuk pola yang diberikan. Memakai wildcard global dapat menyembunyikan konflik kepemilikan file, sisa paket pihak ketiga, atau kerusakan filesystem yang seharusnya diperiksa.
Pacman normal sudah dapat mengganti file milik versi lama dari paket yang sama. Overwrite baru layak dipertimbangkan bila pacman melaporkan konflik pada jalur tertentu dan penyebab konflik tersebut sudah dipahami.
Jika benar-benar diperlukan, batasi pola hanya pada jalur yang bermasalah, bukan seluruh filesystem:
pacman --sysroot /mnt -S glibc \
--overwrite 'usr/lib/nama-file-yang-benar-benar-berkonflik'Kernel lama biasanya bukan penyebab utama symbol lookup error
GLIBC memang memiliki kebutuhan minimum terhadap fitur kernel, tetapi pesan GLIBC_x.y not found lebih sering muncul karena ketidakcocokan antar-komponen userspace: binary, dynamic loader, dan library.
Memperbarui kernel tetap menjadi bagian wajar dari full system upgrade, tetapi memasang kernel baru saja tidak akan memperbaiki salinan GLIBC lama yang termuat melalui path custom.
Regenerasi initramfs hanya bila relevan
GLIBC bukan komponen utama yang biasanya memerlukan regenerasi initramfs. Namun, jika pembaruan terputus saat kernel atau initramfs sedang diproses, jalankan:
arch-chroot /mnt mkinitcpio -PPastikan partisi /boot atau EFI telah di-mount pada lokasi yang benar sebelum menjalankan perintah tersebut. Jika sistem memakai generator initramfs selain mkinitcpio, gunakan alat yang memang dikonfigurasi pada sistem itu.
Pemeriksaan Akhir Sebelum Reboot
Periksa versi dan integritas paket
pacman --sysroot /mnt -Q glibc gcc-libs
pacman --sysroot /mnt -Qkk glibc gcc-libs
pacman --sysroot /mnt -DkJika sistem multilib digunakan:
pacman --sysroot /mnt -Q lib32-glibc lib32-gcc-libsPeriksa log transaksi terakhir
tail -n 100 /mnt/var/log/pacman.logLog dapat menunjukkan apakah transaksi sebelumnya berhenti saat memperbarui GLIBC, kernel, systemd, GCC runtime, atau paket lain.
Periksa ruang disk dan filesystem
df -h /mnt
df -i /mntFilesystem dapat kehabisan ruang inode walaupun kapasitas dalam gigabita masih terlihat tersedia. Jika sebelumnya terjadi mati listrik atau error I/O, pertimbangkan pemeriksaan filesystem dari kondisi unmount sesuai jenis filesystem yang digunakan.
Lepas mount dengan rapi
sync
umount -R /mnt
rebootLepaskan flashdisk ketika firmware atau menu boot meminta, lalu biarkan sistem melakukan boot dari disk utama.
Mencegah Error GLIBC Terulang
Selalu lakukan full system upgrade
sudo pacman -SyuJangan menjalankan pacman -Sy lalu memasang paket baru tanpa menyelesaikan pembaruan seluruh sistem.
Pastikan daya, jaringan, dan ruang disk aman
Untuk laptop, sambungkan pengisi daya. Periksa kapasitas partisi root dan cache pacman sebelum transaksi besar. Hindari menghentikan pacman ketika paket sedang dipasang.
Jangan membersihkan seluruh cache terlalu agresif
Cache paket dapat menjadi jalur pemulihan ketika versi terbaru rusak atau koneksi internet tidak tersedia. Sisakan beberapa versi paket penting alih-alih selalu memakai pacman -Scc.
Tinjau paket AUR setelah pembaruan library besar
Paket AUR atau binary yang ditautkan terhadap library lama mungkin perlu dibangun ulang. Daftar paket asing dapat dilihat dengan:
pacman -QmGunakan snapshot sebagai lapisan pengaman
Pengguna Btrfs dapat memanfaatkan Snapper, Timeshift, atau pengelola snapshot lain. Snapshot bukan pengganti backup data pribadi, tetapi dapat mempercepat rollback ketika pembaruan sistem mengalami masalah.
Hindari mengekspor library path secara global
Batasi LD_LIBRARY_PATH hanya untuk aplikasi yang benar-benar membutuhkannya. Menambahkannya ke konfigurasi global dapat membuat seluruh desktop atau layanan sistem memakai library yang seharusnya hanya digunakan satu program.
Kesimpulan
Error GLIBC version not found atau symbol lookup failed pada Arch Linux paling sering menunjukkan ketidakselarasan antara binary dan library yang dimuat. Masalah tersebut dapat berasal dari partial upgrade, transaksi yang terputus, path library custom, chroot lama, atau paket hasil kompilasi dari sistem lain.
Jika shell masih berjalan, selesaikan full system upgrade sambil memasang ulang glibc dan gcc-libs. Jika Bash atau pacman ikut mati, boot melalui live ISO dan gunakan pacman --sysroot /mnt agar perbaikan dilakukan oleh pacman yang sehat.
Hindari menyalin libc.so.6 secara manual dan jangan menjadikan --overwrite '*' sebagai tombol ajaib. Wildcard memang terlihat gagah, tetapi ia juga bisa menyapu bukti masalah ke bawah karpet.
Pulihkan paket inti melalui pacman, perbarui cache dynamic linker, tuntaskan full system upgrade, lalu pastikan tidak ada library custom yang mengambil alih library resmi Arch Linux.
Saat meminta bantuan di forum, sensor nama pengguna, hostname, alamat IP, UUID perangkat, token, dan jalur direktori pribadi sebelum membagikan log lengkap.