Memahami konsep module AppStream yang memungkinkan satu repositori menawarkan banyak versi aplikasi sekaligus: mendaftar, mengaktifkan, dan beralih module stream seperti Python, Node.js, dan PostgreSQL, plus perbandingannya dengan Software Collections warisan di era 8.x.

Di episode 4 sebelumnya kita mengenal repositori BaseOS dan AppStream sebagai sumber package. Sekarang kita bedah bagian yang paling menarik dari AppStream: module. Module adalah fitur yang memungkinkan satu repositori menawarkan beberapa versi dari aplikasi yang sama secara berdampingan — Python 3.9 di samping Python 3.12, Node.js 20 di samping Node.js 22, dan seterusnya.
Konsep ini adalah jawaban enterprise terhadap masalah klasik "aplikasi saya butuh versi lama, aplikasi saya yang lain butuh versi baru". Di era RHEL 8 dan 9 ia hidup lewat module stream; di era 8.x yang lebih tua ada juga Software Collections (SCL). Mari kita pahami keduanya.
Sebuah module adalah sekelompok package yang dikelola sebagai satu kesatuan — misalnya module python, nodejs, atau postgresql. Setiap module bisa punya beberapa stream, yaitu versi berbeda yang bisa dipilih pengguna. Ada juga profile yang menentukan set package yang diinstall.
Analoginya: module adalah merek aplikasi, stream adalah varian atau versi major, dan profile adalah edisi (misalnya minimal, server, atau development).
dnf5 module listOutputnya menampilkan tabel module beserta stream yang tersedia — ini adalah menu versi software di sistem kalian. Untuk melihat detail satu module:
dnf5 module list pythonUntuk memakai sebuah stream, kalian perlu mengaktifkannya terlebih dahulu. Aktivasi menentukan stream yang menjadi default saat package diinstall dari module tersebut.
sudo dnf5 module enable python:3.12Setelah stream aktif, package terkait bisa diinstall seperti biasa:
sudo dnf5 install python3Tip
Urutan penting: aktifkan stream dulu, baru install package. Menginstall package dari module tanpa mengaktifkan stream bisa menghasilkan versi yang tidak kalian inginkan, dan memperbaiki kesalahan ini di kemudian hari lebih rumit.
sudo dnf5 module disable nodejs:22Menonaktifkan module membuat stream-nya tidak lagi tersedia untuk instalasi baru — berguna untuk mengunci lingkungan agar tidak ada package yang bisa mengambil versi tersebut.
Berikut beberapa module yang paling sering dipakai di dunia nyata:
| Module | Stream Contoh | Penggunaan Umum |
|---|---|---|
python | 3.12, 3.11, 3.9 | Runtime Python untuk aplikasi |
nodejs | 22, 20, 18 | Runtime JavaScript server-side |
postgresql | 16, 15, 13 | Database server PostgreSQL |
nginx | 1.22, 1.20 | Web server dan reverse proxy |
container-tools | latest | Tooling Podman, Buildah, Skopeo |
dnf5 module list postgresqlKalian bisa melihat bahwa beberapa stream menandai status [e] (enabled), [d] (default), atau [x] (disabled) — memahami ketiga status ini adalah kunci manajemen module.
Kebutuhan berubah, dan stream bisa diganti. Prosesnya dua langkah: reset state module, lalu aktifkan stream baru.
sudo dnf5 module reset python
sudo dnf5 module enable python:3.12
sudo dnf5 upgradeWarning
Beralih stream bukan upgrade tanpa risiko — ini mengubah versi major runtime. Aplikasi yang bergantung pada versi lama bisa rusak. Selalu uji di lingkungan staging, dan catat bahwa beberapa stream beralih hanya didukung melalui jalur tertentu (misalnya upgrade aplikasi di sisi aplikasinya sendiri).
Sebelum module AppStream, ekosistem RHEL memakai Software Collections (SCL) — cara lama untuk menyediakan beberapa versi software berdampingan di RHEL 6 dan 7, serta awal era 8.
Ciri khas SCL: software diinstall ke prefix terpisah (/opt/rh/), dan diaktifkan dengan menyambungkan environment:
scl enable rh-python36 -- python3 --versionContoh koleksi populer di era itu: gcc-toolset (toolchain compiler modern), rh-python36, dan devtoolset. Output perintah di atas menampilkan versi Python yang diaktifkan hanya selama perintah itu berjalan.
| Aspek | SCL | AppStream Module |
|---|---|---|
| Lokasi install | Prefix /opt/rh/ terpisah | Lokasi standar /usr/ |
| Aktivasi | Perintah scl enable | Aktivasi global via dnf |
| Manajemen versi | Collection terpisah | Stream dalam satu module |
| Cara modern? | Warisan 8.x | Standar di 9/10 |
Kesimpulan penting: di AlmaLinux 9 dan 10, cara yang benar adalah AppStream module — bukan SCL. SCL sebagian besar sudah pensiun di RHEL 9+, dan kalian tidak akan menemukan scl aktif sebagai praktik yang disarankan. Namun memahami SCL penting untuk mengelola server 8.x yang masih berjalan di lapangan, terutama karena AlmaLinux 8 masih dalam masa maintenance hingga 2029.
latest dan tidak perlu diaktifkan.dnf5 module reset. Tanpa reset, aktivasi stream baru sering gagal karena state lama masih menempel.Pada episode 5 ini kalian telah memahami module AppStream: konsep module, stream, dan profile, cara mendaftar, mengaktifkan, menonaktifkan, dan beralih stream, contoh-contoh module populer seperti Python, Node.js, dan PostgreSQL, serta perbandingan jujur antara module modern dan Software Collections warisan di era 8.x.
Inti yang harus dibawa pulang:
dnf5 module enable <name>:<stream>, lalu install package-nya.module reset → module enable → upgrade.python:3.12, nodejs:20, postgresql:16.gcc-toolset) adalah warisan 8.x — gunakan AppStream module di 9/10.Manajemen versi software yang rapi adalah ciri sysadmin matang. Di episode 6 selanjutnya, kita akan membahas User, Permissions & Sudo — dari pembuatan user dan group, file identitas /etc/passwd dan /etc/shadow, hingga konfigurasi sudo, group wheel, ACL, dan special bits SUID/SGID/sticky. Sampai jumpa!