Tutorial Ubuntu 26.04 / Mengelola instalasi, izin, dan pembaruan Snap

Kelola Snap di Ubuntu Server melalui baris perintah dengan memeriksa revisi yang terpasang, penerbit, kanal, koneksi antarmuka, dan keadaan pembaruannya. Snap dipasang secara terpisah dari paket Deb melalui APT; nama program yang sama tetap perlu dibedakan menurut jalur eksekusi, bentuk paket, dan lokasi datanya.

Periksa bentuk paket dan penerbitnya terlebih dahulu

Baca penerbit, deskripsi, serta kanal melalui snap info NAMA_APLIKASI, lalu bandingkan nama yang terpasang, versi, dan kanal yang diikuti melalui snap list. Ganti penanda nama dengan nama paket yang sebenarnya. Gunakan command -v NAMA_PERINTAH untuk mengetahui perintah yang ditemukan shell. Nama yang sama tidak membuktikan bahwa pemelihara, jalur pembaruan, atau lokasi konfigurasinya sama.

Panduan pengelolaan paket Ubuntu Server menjelaskan pengelolaan paket Deb melalui APT. Untuk operasi Snap, gunakan panduan awal Snap dan dokumentasi antarmukanya.

snap list
snap changes
snap refresh --time

Catat nama, versi, revisi, dan kanal pada kolom Tracking di snap list. snap changes menampilkan riwayat operasi seperti instalasi dan refresh, sedangkan snap refresh --time menunjukkan jadwal serta waktu refresh. Tidak adanya pembaruan APT tidak membuktikan bahwa semua aplikasi Snap sudah mutakhir.

Periksa instalasi dan eksekusi aplikasi latihan kecil

Periksa terlebih dahulu apakah hello-world sudah terpasang. Pertahankan instalasi dan kanal yang sudah ada. Baca informasi penerbit dan kanal melalui snap info hello-world sebelum memutuskan pemasangan. Jika Snap Store menampilkan pemberitahuan bahwa kanal sudah lama tidak diperbarui, nilai kondisi itu sebelum memasang. Gunakan paket contoh sebagai latihan terisolasi, bukan sebagai acuan pemilihan perangkat lunak layanan produksi.

snap info hello-world
sudo snap install hello-world
hello-world

Jalankan baris satu per satu: periksa informasi paket, pasang hanya bila diputuskan perlu, lalu verifikasi eksekusi setelah instalasi berhasil. Program latihan ini menampilkan sapaan. Jika perintah tidak ditemukan melalui PATH, periksa sesi login dan jalur /snap/bin sebelum memasang paket lain yang namanya serupa.

Pahami kanal dan tingkat isolasi

Kanal dapat memuat track, tingkat risiko, dan branch. stable, candidate, beta, serta edge merupakan aliran rilis yang berbeda, bukan jaminan stabilitas yang setara. Utamakan aliran stabil yang direkomendasikan penerbit dan catat kanal saat ini serta cadangan data sebelum berpindah. Rincian strukturnya tersedia dalam dokumentasi kanal dan track Snap.

strict membatasi akses sumber daya melalui mekanisme isolasi dan antarmuka yang diizinkan; classic memberi akses lebih luas seperti paket tradisional. devmode merupakan mode pengembangan dengan kondisi akses berbeda. Pahami alasan aplikasi memerlukan classic dan jangan menambahkan --classic atau --devmode hanya untuk menghilangkan kegagalan instalasi. Lihat penjelasan resmi confinement Snap untuk batas masing-masing.

Periksa antarmuka dan penyebab kegagalan akses

Pilih nama aplikasi yang benar dari snap list, lalu periksa snap connections NAMA_APLIKASI. Antarmuka menghubungkan plug milik pemakai sumber daya dengan slot milik penyedianya. Kegagalan akses penyimpanan eksternal dapat melibatkan antarmuka, mount sistem file, atau izin file. Jangan menghubungkan semua antarmuka sekaligus.

Gunakan snap info NAMA_APLIKASI, snap connections NAMA_APLIKASI, dan dokumentasi penerbit untuk mengenali akses yang dibutuhkan. Izinkan hanya akses tersebut dan uji fitur terkait. Catat keadaan awal agar hanya koneksi baru yang diputus setelah pengujian. Koneksi antarmuka tidak menggantikan izin file pada host.

Periksa plug yang dideklarasikan dan pulihkan hanya koneksi baru

Pada Snap server yang sudah terpasang, identifikasi antarmuka yang benar-benar diperlukan dari dokumentasi penerbit. Bandingkan kolom Plug dan Slot pada snap connections NAMA_APLIKASI dengan hasil snap interface NAMA_ANTARMUKA. Masukkan nilai SNAP:PLUG dan SLOT yang benar-benar diamati ke skrip berikut. Slot sistem dapat tampil dengan awalan titik dua, misalnya :network. Jika plug yang diperlukan tidak dideklarasikan, berhenti; jangan mengarang nama izin untuk meneruskan latihan.

Simpan seluruh skrip sebagai ~/test-snap-interface.sh, lalu jalankan bash ~/test-snap-interface.sh SNAP:PLUG_AKTUAL SLOT_AKTUAL dengan kedua penanda diganti nilai sebenarnya. Skrip mempertahankan koneksi yang sudah ada. Untuk koneksi baru, uji hanya fitur yang didokumentasikan melalui terminal lain, kemudian tekan Enter pada terminal skrip untuk memulihkannya. Jangan menghubungkan antarmuka dengan akses sistem sensitif sekadar untuk latihan pada server produksi.

set -eu
if [ "$#" -ne 2 ]; then
    printf 'Pemakaian: bash test-snap-interface.sh SNAP:PLUG SLOT\n' >&2; exit 2
fi
plug=$1
slot=$2
app=${plug%%:*}
case "$plug" in *:*) ;; *) printf 'Gunakan Plug persis dari snap connections.\n' >&2; exit 2 ;; esac
case "$slot" in *:*) ;; *) printf 'Gunakan Slot persis dari snap connections.\n' >&2; exit 2 ;; esac
snap list "$app"
connections=$(LC_ALL=C snap connections "$app")
printf '%s\n' "$connections"
previous_slot=$(printf '%s\n' "$connections" | awk -v p="$plug" '$2 == p {print $3}')
case "$previous_slot" in
    -) ;;
    '') printf 'Plug yang dideklarasikan tidak ditemukan; berhenti.\n' >&2; exit 1 ;;
    *) printf 'Sudah terhubung ke %s; pertahankan.\n' "$previous_slot"; exit 0 ;;
esac
restore() {
    original_status=$?
    trap - EXIT HUP INT TERM
    if ! connections=$(LC_ALL=C snap connections "$app"); then
        printf 'Koneksi tidak dapat diperiksa; verifikasi pemulihan secara manual.\n' >&2; exit 1
    fi
    current_slot=$(printf '%s\n' "$connections" | awk -v p="$plug" '$2 == p {print $3}')
    case "$current_slot" in
        "$previous_slot") ;;
        "$slot")
            if ! sudo snap disconnect "$plug" "$slot"; then
                printf 'Pemulihan gagal; periksa koneksi.\n' >&2; exit 1
            fi
            ;;
        *) printf 'Keadaan koneksi tidak terduga; periksa sebelum memutuskan.\n' >&2; exit 1 ;;
    esac
    if ! connections=$(LC_ALL=C snap connections "$app"); then
        printf 'Pemulihan tidak dapat diverifikasi; periksa koneksi.\n' >&2; exit 1
    fi
    printf '%s\n' "$connections"
    restored_slot=$(printf '%s\n' "$connections" | awk -v p="$plug" '$2 == p {print $3}')
    if [ "$restored_slot" != "$previous_slot" ]; then
        printf 'Keadaan koneksi awal tidak dipulihkan.\n' >&2; exit 1
    fi
    exit "$original_status"
}
trap restore EXIT
trap 'exit 129' HUP
trap 'exit 130' INT
trap 'exit 143' TERM
sudo snap connect "$plug" "$slot"
snap connections "$app"
read -r -p 'Uji fitur aplikasi sesuai dokumentasinya di terminal lain; tekan Enter untuk memulihkan: ' answer

Periksa bahwa tanda belum terhubung - berubah menjadi Slot yang diminta, lalu jalankan snap connections NAMA_APLIKASI kembali setelah keluar. Skrip hanya memutus koneksi ke Slot yang diminta dan memeriksa apakah plug kembali ke keadaan awal yang belum terhubung. Jika keadaannya berubah menjadi koneksi lain yang tidak terduga, skrip meminta pemeriksaan alih-alih memutusnya secara membabi buta.

Kegagalan pemutusan, pembacaan, atau verifikasi keadaan menghasilkan kode keluar bukan nol. Jika latihan sudah gagal sebelumnya tetapi pemulihan berhasil, kode kegagalan latihan tetap dipertahankan. Pemulihan juga dicoba ketika Ctrl+C atau sinyal penghentian ditangani, tetapi tidak menjamin pemulihan saat listrik padam atau penghentian paksa yang tidak dapat ditangani. Simpan Plug, Slot, keadaan awal, dan perintah pemulihan pada catatan kerja agar dapat diperiksa secara manual. Periksa izin file host serta kebijakan akses layanan secara terpisah.

Memulihkan nilai Plug/Slot tidak berarti seluruh kebijakan koneksi otomatis kembali persis seperti semula. Pemutusan manual dapat dicatat snapd dan bertahan setelah refresh; jangan menambahkan --forget tanpa menilai pengaruhnya pada penyambungan otomatis. Panduan resmi koneksi antarmuka menjelaskan koneksi, pemutusan, dan catatan pemutusan manual. Panduan penggunaan Ubuntu Core juga memberi contoh perintah Snap tersebut; contoh lingkungan Core perlu dibedakan dari konfigurasi Ubuntu Server Anda.

Periksa pembaruan, pengembalian revisi, dan data setelah penghapusan

Anda dapat meminta pembaruan satu aplikasi dengan sudo snap refresh NAMA_APLIKASI setelah memeriksa dampaknya pada aplikasi dan layanan yang sedang digunakan. Jadwal dan kendali refresh dijelaskan dalam panduan pembaruan Snap. Pengembalian ke revisi sebelumnya tidak menjamin kompatibilitas mundur format data aplikasi dan tidak menggantikan cadangan.

Hapus hanya aplikasi latihan yang baru dipasang dan tidak lagi diperlukan melalui sudo snap remove hello-world. Periksa snapshot data otomatis, bila dibuat, dengan snap saved dan tentukan kebijakan penyimpanannya secara terpisah. Dokumentasi snapshot data Snap menjelaskan cakupannya; penghapusan aplikasi, penyimpanan snapshot, dan penghapusan semua file pengguna merupakan operasi berbeda.