Episode ini membandingkan dua libc yang ditawarkan Void Linux: glibc sebagai pilihan default dengan kompatibilitas luas, dan musl sebagai opsi ringan dengan footprint kecil. Kalian akan memahami implikasinya pada repositori, aplikasi, runtime, dan container.

Salah satu keputusan terpenting saat install Void Linux adalah memilih libc: glibc atau musl. Keduanya adalah implementasi dari standard C library — lapisan yang menghubungkan aplikasi dengan kernel. Episode 6 membandingkan keduanya secara jujur: kekuatan, kelemahan, dan kapan memilih yang mana.
Keputusan ini tidak bisa dibalik dengan mudah setelah sistem terinstall. Kalian tidak bisa mencampur paket glibc dan musl dalam satu sistem, karena keduanya menyediakan simbol yang sama dengan cara berbeda. Karena itu, pahami perbedaannya sebelum memilih.
Mari kita bedah kedua libc tersebut.
Libc menyediakan fungsi-fungsi dasar yang dipakai semua program — pembukaan berkas, alokasi memori, jaringan, hingga threading. Tanpa libc, hampir tidak ada program yang bisa berjalan di atas kernel Linux. Setiap program di sistem kalian terhubung ke libc, baik secara dinamis maupun statis.
Periksa libc mana yang dipakai program tertentu:
ldd /bin/ls | headOutput ldd /bin/ls menampilkan libc.so.6 pada sistem glibc, atau libc.musl-x86_64.so.1 pada sistem musl.
glibc adalah libc yang dipakai mayoritas distro Linux. Keunggulannya adalah kompatibilitas yang sangat luas: hampir semua software — termasuk aplikasi proprietary dan binary prebuilt — berjalan mulus di atasnya. glibc juga kaya fitur, termasuk dukungan locale lengkap, NSS (Name Service Switch), dan threading yang matang.
Void menyediakan repositori current untuk glibc dengan jumlah paket paling lengkap. Bagi pengguna desktop atau pengguna yang butuh software proprietary, glibc adalah pilihan yang paling aman.
Kekurangan glibc adalah ukuran dan kompleksitasnya. File-nya lebih besar, dan beberapa perilaku tambahannya tidak selalu dibutuhkan di server minimal. Untuk sistem yang mementingkan footprint kecil, glibc terasa terlalu gemuk.
musl adalah libc yang dirancang untuk kesederhanaan dan efisiensi. Ukurannya lebih kecil, loading lebih cepat, dan area permukaan serangannya lebih sempit. musl juga membuat kompilasi statis menjadi praktis — sebuah keuntungan besar untuk container dan distribusi binary. Bagi kalian yang membangun image container minimal atau aplikasi single-binary, kombinasi musl dan linking statis menghilangkan banyak masalah kompatibilitas antar sistem.
du -sh /usr/lib/libc.so.6 2>/dev/null || du -sh /usr/lib/libc.musl-*Pada sistem musl, perintah du -sh /usr/lib/libc.musl-* menampilkan ukuran musl yang jauh lebih kecil dibanding glibc.
Tidak semua software mendukung musl. Beberapa aplikasi — terutama yang proprietary atau bergantung pada perilaku spesifik glibc — perlu penyesuaian atau tidak tersedia di repositori musl. Dukungan locale juga lebih terbatas dibanding glibc.
Void mengelola satu pohon template paket untuk kedua libc. XBPS membedakan repositori berdasarkan arch dan flavor:
current : glibc x86_64 (default)
current/musl : musl x86_64
current-musl : repo musl (multiarch)Kebijakan ini berarti paket yang sama dikompilasi ulang untuk masing-masing libc. Sebagian besar paket di repositori tersedia untuk keduanya, meski beberapa paket proprietary hanya di flavor glibc.
musl sangat populer untuk container karena footprint-nya yang kecil. Banyak base image Linux minimal dibangun di atas musl. Keuntungan lain: binary yang dikompilasi statis dengan musl bisa dijalankan di sistem glibc dan sebaliknya tanpa masalah.
Tidak ada jawaban yang benar untuk semua orang. Keputusan ini sebaiknya diambil berdasarkan workload utama kalian, bukan berdasarkan tren. Pertimbangkan juga bahwa pindah flavor di kemudian hari berarti instalasi ulang, karena paket glibc dan musl tidak bisa dicampur. Gunakan panduan berikut:
Cara termudah mengetahui flavor sistem yang sedang berjalan:
xbps-query -l | head -n 1
cat /etc/os-release | grep MUSLJika output menyertakan MUSL=yes pada /etc/os-release, sistem kalian memakai musl. Tanpa baris itu, sistem memakai glibc.
Episode 6 membandingkan glibc dan musl secara mendalam: glibc unggul dalam kompatibilitas dan fitur, sementara musl unggul dalam ukuran kecil dan keamanan. Kalian juga memahami bagaimana Void mengelola kedua flavor dalam satu ekosistem repositori dan kapan memilih masing-masing.
Inti yang harus dibawa pulang:
Di episode 7 selanjutnya kita akan membahas user, group, network, dan boot — membuat user dan grup dengan useradd, mengatur akses sudo dan doas lewat grup wheel, mengonfigurasi jaringan statis dan dinamis, serta memahami alur boot Void dari kernel hingga runit.