Snap dan Flatpak

Posisi Snap dan Flatpak sebagai alternatif pemaketan lintas distro.

Daftar isi

Paket .deb dan manajer apt mengikat aplikasi pada satu distro beserta rilisnya, sedangkan Snap dan Flatpak mengemas aplikasi beserta lingkungan berjalannya sehingga satu paket dapat dipasang pada banyak distro. Topik ini membahas alasan kedua format ini muncul, mekanisme masing-masing, perbandingannya dengan paket .deb, dan kriteria memilih format yang tepat. Perintah spesifiknya tidak dapat dieksekusi pada sandbox ini karena snapd dan flatpak memang tidak terpasang di sana, tetapi ketersediaannya pada repositori Debian dapat dibuktikan dengan kueri yang berjalan tanpa hak root.

Mengapa format lintas distro muncul#

Paket .deb dibangun terhadap versi pustaka dari satu rilis distro. Aplikasi yang dibangun untuk bookworm bisa saja menolak berjalan di trixie karena pustakanya sudah berganti versi, dan pengembang aplikasi yang ingin menjangkau banyak distro harus membangun serta merawat paket untuk setiap rilis. Akibatnya, versi terbaru sebuah aplikasi sering tiba di repositori distro dengan keterlambatan yang bukan salah siapa pun, melainkan konsekuensi dari proses kurasi itu sendiri.

Snap dan Flatpak menjawab persoalan itu dengan membawa lingkungan berjalannya sekaligus. Aplikasi dibungkus bersama pustaka yang dibutuhkannya, atau menggunakan runtime yang digunakan bersama beberapa aplikasi, sehingga paket yang sama dapat berjalan pada distro mana pun yang memasang mesin formatnya. Konsekuensinya jelas dua arah, yaitu aplikasi mutakhir tersedia untuk semua distro, tetapi ukuran pemasangannya jauh lebih besar daripada paket .deb yang berbagi pustaka dengan seluruh sistem.

Kedua format ini bukan pengganti apt pada sandbox ini, melainkan lapisan tambahan yang mesinnya juga dipasang melalui apt. Pada sandbox ini kedua mesinnya memang belum terpasang, dan keadaan itu dapat dibuktikan dengan kueri basis data paket.

bash
# membuktikan snapd dan flatpak belum terpasang
dpkg -l snapd flatpak
text Keluaran
dpkg-query: no packages found matching snapd
dpkg-query: no packages found matching flatpak

Pesan no packages found matching adalah bukti ketiadaan, bukan error yang perlu diperbaiki. Namun demikian, kedua paket mesinnya tetap tersedia pada repositori resmi Debian, sehingga mesinnya hanya berjarak satu perintah apt install apabila diputuskan untuk dipakai.

Snap#

Snap adalah format dari Canonical. Mesinnya bernama snapd, berjalan sebagai layanan sistem, dan mengambil paket dari Snap Store. Sebuah paket snap membawa aplikasi beserta pustakanya. Pengambilan versi mengikuti kanal (channel) seperti stable, candidate, beta, dan edge, sehingga pengguna dapat memilih tingkat keberaniannya. Setiap snap dijalankan dalam isolasi (confinement) yang dikendalikan, dengan tingkat strict sebagai bawaan yang membatasi akses berkas dan jaringan kecuali diberi izin.

Snapd melakukan pembaruan secara otomatis dan berkala, tanpa menunggu perintah administrator, dan perilaku ini membedakannya dari paket .deb yang pembaruannya sepenuhnya dikendalikan. Pembaruan otomatis itu dapat ditangguhkan, tetapi perilaku bawaannya tetap aktif, sehingga versi snap pada mesin sering lebih baru daripada yang diingat administratornya. Pada Ubuntu, snapd lazim sudah terpasang sejak awal, sedangkan pada Debian paketnya tersedia di repositori resmi dan dipasang bila diperlukan.

bash
# ketersediaan snapd pada repositori Debian
apt-cache policy snapd
text Keluaran
snapd:
  Installed: (none)
  Candidate: 2.68.3-3+deb13u1+b7
  Version table:
     2.68.3-3+deb13u1+b7 500
        500 http://deb.debian.org/debian trixie/main amd64 Packages
     2.68.3-3+deb13u1 500
        500 http://deb.debian.org/debian-security trixie-security/main amd64 Packages
bash
# tidak-dijalankan
# snapd berjalan sebagai layanan systemd, sehingga tidak bisa diuji pada container ini
sudo apt install snapd
# memasang aplikasi pengolah catatan dari Snap Store
sudo snap install aplikasi-catatan

Flatpak#

Flatpak adalah format lintas distro yang dikembangkan komunitas, dengan katalog terbesarnya bernama Flathub. Paketnya dibangun di atas runtime yang digunakan bersama oleh keluarga aplikasi, misalnya satu runtime untuk seluruh aplikasi berbasis GNOME, sehingga ukuran per aplikasi lebih hemat daripada membawa seluruh pustaka sendiri. Sumber paket disebut remote, dan Flathub didaftarkan sebagai remote sebelum aplikasi apa pun dapat dipasang.

Isolasi berjalan melalui sandbox yang membatasi akses berkas, jaringan, dan perangkat keras. Komunikasi dengan lingkungan sistem dilakukan melalui portal, yaitu antarmuka kecil yang meminta izin per kebutuhan, misalnya membuka satu berkas melalui dialog pemilih berkas. Pemasangan untuk seluruh sistem menuntut hak root, sedangkan pemasangan per pengguna dengan opsi --user menempatkan seluruh komponennya di direktori rumah tanpa hak root. Pembaruannya dikendalikan per aplikasi, tidak seperti snap yang menyegarkan dirinya secara otomatis.

bash
# tidak-dijalankan
# mendaftarkan Flathub sebagai remote Flatpak
flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo
# memasang aplikasi pengolah catatan dari Flathub
flatpak install flathub org.example.Pencatat

Paket flatpak juga tersedia pada repositori resmi Debian, sehingga mesinnya dapat dipasang dengan apt sebelum remote mana pun didaftarkan.

bash
# ketersediaan flatpak pada repositori Debian
apt-cache policy flatpak
text Keluaran
flatpak:
  Installed: (none)
  Candidate: 1.16.6-1~deb13u3
  Version table:
     1.16.6-1~deb13u3 500
        500 http://deb.debian.org/debian-security trixie-security/main amd64 Packages
     1.16.6-1~deb13u2 500
        500 http://deb.debian.org/debian trixie/main amd64 Packages

Perbandingan deb, snap, dan flatpak#

Tiga format ini saling melengkapi, dan perbandingannya paling jelas bila diletakkan berdampingan. Tabel berikut merangkum perbedaan yang paling berpengaruh pada keputusan sehari-hari.

Aspekdeb dengan aptSnapFlatpak
Cakupan distrosatu distro beserta rilisnyalintas distrolintas distro
Sumber paketrepositori distroSnap Storeremote seperti Flathub
Dependensidipecahkan dari pustaka sistemdibawa utuh dalam paketruntime yang dipakai bersama
Pembaruandikendalikan melalui aptotomatis oleh snapddikendalikan per aplikasi
Isolasitidak adaconfinement tingkat strictsandbox dengan portal izin
Ukuran pemasangankecil, pustaka dipakai bersamabesar, pustaka dibawa per paketmenengah, runtime dipakai bersama

Tabel itu menunjukkan bahwa tidak ada format yang unggul pada semua kolom. Paket .deb unggul pada ukuran dan integrasi dengan sistem, sedangkan Snap dan Flatpak unggul pada kemutakhiran aplikasi serta jangkauan distronya. Pilihan yang salah format jarang berakibat fatal, tetapi pilihan yang tepat menghemat disk dan mengurangi kejutan pembaruan.

Kriteria memilih format#

Untuk peralatan baris perintah dan layanan server, paket .deb melalui apt tetap menjadi pilihan bawaan. Alat semacam ini kecil, terintegrasi penuh dengan sistem, dan pembaruannya mengikuti disiplin rilis distro yang sudah teruji, sedangkan isolasi ekstra yang ditawarkan Snap dan Flatpak jarang membawa manfaat untuk program tanpa antarmuka grafis.

Untuk aplikasi desktop yang versinya di repositori distro terlambat jauh dari versi terbaru, Snap dan Flatpak menjadi jalur yang tepat. Keduanya menghadirkan versi mutakhir tanpa mengganti rilis distro, dan isolasinya menyembunyikan perbedaan pustaka antardistro. Apabila aplikasi yang dicari tidak ada di repositori resmi maupun katalog distro, Flathub dan Snap Store adalah dua tempat yang layak diperiksa, asalkan mesin formatnya tersedia pada distro yang digunakan.

Ketiga format dapat hidup berdampingan pada satu sistem tanpa saling mengganggu. Yang perlu dijaga hanyalah satu hal, yaitu satu aplikasi bisa terpasang dalam dua format sekaligus, sehingga versi yang berjalan perlu diperiksa sebelum keputusan konfigurasi diambil.

Kesalahan umum#

  • Menjalankan snapd pada container tanpa systemd. Layanan itu gagal berjalan, dan sandbox pada jalur ini adalah contohnya, sehingga uji coba snap perlu mesin dengan systemd.
  • Menganggap Snap dan Flatpak memperkecil penggunaan disk. Keduanya membawa pustaka atau runtime, sehingga aplikasi yang sama dalam format deb dan snap dapat berbeda ukuran beberapa kali lipat.
  • Memasang aplikasi yang sama melalui dua format sekaligus. Dua salinan dengan versi berbeda berada di sistem, dan ikon serta pembaruan yang ganda membingungkan.
  • Mengabaikan izin portal pada Flatpak. Aplikasi yang gagal membuka berkas atau jaringan biasanya belum diberi izin portalnya, dan itu perilaku yang dirancang, bukan rusak.
  • Menggunakan kanal edge untuk aplikasi pekerjaan serius. Kanal itu memuat pembangunan terbaru yang belum teruji, sehingga stable tetap menjadi pilihan untuk pekerjaan harian.

Ringkasan#

  • Snap dan Flatpak mengemas aplikasi bersama pustaka atau runtime-nya, sehingga satu paket berjalan pada banyak distro dengan harga ukuran pemasangan yang lebih besar.
  • Snap berjalan melalui layanan snapd dengan kanal versi dan pembaruan otomatis, sedangkan Flatpak menggunakan runtime bersama, remote seperti Flathub, dan izin portal per aplikasi.
  • Paket .deb tetap unggul untuk peralatan server karena ringan dan terintegrasi, sedangkan format lintas distro menang untuk aplikasi desktop yang butuh versi mutakhir.
  • Pada sandbox ini snapd dan flatpak tidak terpasang, tetapi keduanya tersedia di repositori resmi Debian dan ketersediaannya dapat dibuktikan dengan apt-cache policy.

Referensi#