Postingan ini saya buat ketika saya mencari tau kenapa setiap saya mengecek apa saya yang telah di install dan memfilter menggunakan grep dan outputnya keluar dengan tulisan
WARNING: apt does not have a stable CLI interface. Use with caution in scripts.
saya menggunakan command
dan outputnya
atau bisa juga menggunakan command
dan outputnya
bedanya command apt list --installed | grep docker
atau dpkg -l | grep docker
apt list --installed = perintah dari APT (modern frontend) sumber datanya dari metadata database APT
dpkg -l = perintah dari DPKG (backend system package manager) sumber datanya dari database dpkg langsung
Maksud gampangnya:
apt itu adalah alat buat install, update, hapus software di Linux (Ubuntu).
Tapi, tampilan perintah apt ini belum dijamin stabil.
Maksud belum stabil itu:
- Di masa depan, cara apt menampilkan hasil, atau opsi-opsinya bisa berubah.
- Jadi, jangan terlalu mengandalkan apt di dalam script otomatis (misal file bash yang jalan otomatis), karena kalau apt berubah, script-nya bisa error.
- Tapi kalau cuma dipakai manual kayak yang saya lakukan barusan aman.
- Ini cuma peringatan buat programmer atau sysadmin yang bikin script otomatis, rekomendasi menggunakan apt-get untuk script automation.
Terus apakah ada solusinya?
Sebenernya tidak perlu solusi khusus, karena:
- apt memang secara bawaan di Ubuntu 24.04 (dan versi-versi baru) kasih warning ini.
- Ubuntu pengennya orang-orang yang bikin automation/script pakai apt-get bukan apt.
Dengan rasa penasaran saya, saya mencoba menjalankan command, di bawah ini
dan outputnya
Kenapa error?
Karena apt-get tidak punya subcommand list.
Bedanya di sini:
- apt list --installed → ada di apt (lebih modern, sejak Ubuntu 16.04 ke atas)
- apt-get → tidak punya list. Dia cuma punya:
install, remove, update, upgrade
Nah, terus kenapa tadi aku bilang:
apt-get cocok untuk automation/script?
Maksudnya begini:
Kalau kamu bikin script otomatis (misal file .sh) yang dipakai di server, CI/CD, atau deployment
Misalnya:
apt-get update
apt-get install nginx
apt-get install docker-ce
Maka jauh lebih aman pakai apt-get karena:
- Output-nya stabil.
- Tidak banyak warning, info, atau formatting warna-warni kayak apt.
- Kalau ada error, lebih jelas dan gampang dibaca scriptnya.
- Karena automation butuh stabilitas output.
Apa sih maksudnya "bikin script automation" itu?
Sederhananya:
Bikin script automation itu artinya bikin file yang berisi perintah-perintah terminal (shell command) supaya bisa dijalankan otomatis, tanpa kita ketik manual satu-satu.
Misalnya:
Kalau kamu install server baru, biasanya kamu akan ngetik manual:
sudo apt update
sudo apt install nginx
sudo apt install docker-ce
sudo apt install mysql-server
sudo ufw allow 22
sudo ufw allow 80
sudo ufw enable
Capek kan kalau tiap kali harus ketik satu-satu?
Solusinya: bikin automation script
Kamu bikin file misalnya setup-server.sh
isinya
#!/bin/bash
apt-get update
apt-get install -y nginx
apt-get install -y docker-ce
apt-get install -y mysql-server
ufw allow 22
ufw allow 80
ufw enable
Langkah - langkah membuat script automation
Pertama Buat file baru:
nano setup-server.sh
Kalau kamu pakai editor lain (vim, code-server, dsb) juga boleh.
"Bikin file scriptnya itu di taro dimana folder mana?"
Jawabannya:
Bebas kamu taruh di mana aja, selama kamu tau path-nya.
Tapi biar gampang, cukup taruh di home directory kamu.
Sekarang lihat folder kamu, misalnya
namauser@namahostname:~$
Kamu sekarang udah berada di home directory kamu sendiri.
Misalnya, Kamu mau bikin file script automation di home
nano setup-server.sh
File setup-server.sh nanti otomatis tersimpan di
/home/namausers/setup-server.sh
Kalau pakai perintah ls
ls -la
Nanti file itu bakal muncul.
Cara menjalankannya
pastikan berada di home
atau bisa menggunakan command cd ~
lalu bisa menjalankan ./setup-server.sh
Kamu juga boleh bikin folder khusus
mkdir scripts
cd scripts
nano setup-server.sh
Jadi nanti file kamu rapi di dalam:
/home/namauser/scripts/setup-server.sh
Maka cara menjalankannya ada 3 opsi
Opsi 1 — pindah dulu ke folder-nya:
cd ~/scripts
./setup-server.sh
Opsi 2 — panggil pakai full path
/home/namauser/scripts/setup-server.sh
Opsi 3 — pakai relative path
Misalnya kamu masih di home:
./scripts/setup-server.sh
Di Linux, ./ artinya: "folder tempat aku berdiri sekarang"
Makanya kalau kamu di folder yang sama, cukup pakai ./namafile.
Kedua Isi file-nya seperti ini, contohnya
#!/bin/bash
# update package list
apt-get update
# install nginx
apt-get install -y nginx
# install docker-ce
apt-get install -y docker-ce
# install mysql-server
apt-get install -y mysql-server
# konfigurasi firewall
ufw allow 22
ufw allow 80
ufw enable
Lihat ya
Di sini aku pakai apt-get di bagian install.
Karena ini script automation, biar stabil.
Dan saat kamu bikin file script automation (biasanya file .sh), perintah apt-get kamu tulis di dalamnya.
Karena script automation butuh output yang stabil → apt-get lebih aman dipakai daripada apt.
#!/bin/bash
Ini namanya: Shebang
Fungsinya Ngasih tau sistem
"Hei sistem Linux, tolong jalankan file ini pakai program bash (shell interpreter)."
Jadi pas kamu ketik:
./setup-server.sh
Linux tau harus jalanin file ini pakai bash.
Kalau kamu gak kasih #!/bin/bash
, kadang bisa error, atau sistem bingung ini file harus dijalankan pakai apa.
Intinya:
Wajib ditulis di paling atas file bash script kamu.
Biar sistem tau ini file script Bash.
Kenapa ada -y ?
-y itu supaya otomatis jawab "yes" saat install (biar nggak nanya kamu terus).
Ketiga Kasih permission biar bisa dijalankan
Saat kamu bikin file script, misalnya:
setup-server.sh
Itu kan cuma file teks biasa.
Linux gak otomatis tau bahwa file itu "boleh dijalankan" kayak program.
Makanya, sebelum file itu bisa dijalankan, kita harus kasih ijin:
chmod +x setup-server.sh
Artinya file ini sekarang boleh dieksekusi.
chmod = change mode → artinya mengubah izin akses file.
+x = kasih hak eksekusi → artinya: "file ini boleh dijalankan (execute)".
Keempat Jalankan script automation-nya:
sudo ./setup-server.sh
Atau
sudo bash setup-server.sh
Nah, di sinilah automation terjadi, karena
- Kamu tinggal ketik 1 perintah, semua install jalan otomatis.
- Tidak perlu ketik manual satu-satu lagi.
- Karena kita pakai apt-get, maka aman untuk automation (tidak ada warning unstable interface).
Kapan apt dipakai?
Kalau kamu ngetik langsung di terminal
sudo apt install nginx
Aman pakai apt.
Karena interaktif, kamu bisa lihat warning-nya, tinggal enter aja.
Top comments (1)
Some comments may only be visible to logged-in visitors. Sign in to view all comments.