- Flatpak memungkinkan Anda mengemas aplikasi dan dependensinya ke dalam wadah portabel dan terisolasi untuk berbagai distribusi. Linux.
- Paket Flatpak didasarkan pada runtime bersama, metadata yang komprehensif, dan struktur file, ikon, dan AppData yang jelas.
- Flathub bertindak sebagai repositori pusat untuk aplikasi Flatpak, meskipun proses penerbitannya memerlukan manifes terperinci dan kompilasi tanpa akses jaringan.

Jika Anda bekerja dengan GNU/Linux dan tertarik untuk mendistribusikan aplikasi Anda dengan cara yang sederhana, cepat atau lambat Anda akan menemukan Flatpak. Format pengemasan ini telah menjadi salah satu cara paling populer untuk mengirimkan aplikasi desktop. yang bekerja sama pada hampir semua distribusi, tanpa bersusah payah dengan dependensi atau manajer paket saat itu.
Dalam panduan ini kita akan melihat Cara membuat paket Flatpak langkah demi langkah, dari awal dan sangat detailAnda akan melihat secara langsung apa itu Flatpak, mengapa begitu penting saat ini, apa yang perlu Anda persiapkan di lingkungan Anda, cara menyusun paket Anda, metadata apa yang Anda butuhkan, cara menginstalnya, mengujinya, mengekspornya ke repositori, dan bahkan apa artinya mengunggahnya ke Flathub. Semua ini dengan pendekatan praktis dan gaya yang mudah dipahami sehingga Anda tidak merasa kewalahan.
Apa itu Flatpak dan mengapa itu menjadi begitu penting?

Flatpak adalah teknologi pengemasan dan distribusi perangkat lunak berbasis kontainer untuk LinuxIdenya sangat sederhana tetapi hebat: alih-alih bergantung pada manajer paket setiap distribusi, aplikasi dikemas bersama pustaka dan dependensi yang dibutuhkannya, dan berjalan dalam lingkungan terisolasi (kotak pasir) yang menjamin perilaku konsisten pada distro mana pun yang kompatibel.
Dalam praktek, Paket Flatpak menyertakan aplikasi dan semua pustaka yang diperlukan agar aplikasi dapat berfungsi.Tanpa mengganggu program sistem lainnya. Hal ini menghindari masalah ketergantungan klasik, mengurangi konflik, dan memberi pengembang kendali langsung atas bagaimana aplikasi mereka didistribusikan dan diperbarui, tanpa harus menunggu pengelola distribusi mengemasnya.
Untuk mencapai hal ini, Flatpak mengandalkan lingkungan runtime bersamaRuntime ini menyediakan fondasi umum (misalnya, versi platform GNOME tertentu) tempat beberapa aplikasi berjalan. Dengan demikian, Anda tidak perlu mengemas semua aplikasi di setiap aplikasi, melainkan hanya yang belum termasuk dalam runtime, sehingga menghemat ruang dan menyederhanakan pemeliharaan.
Selain itu, aplikasi Flatpak berjalan di kotak pasir dengan sistem izinnya sendiriModel ini memungkinkan Anda mengontrol akses ke sumber daya seperti sistem berkas, jaringan, Bluetooth, audio, atau server grafis (X11/Wayland). Isolasi meningkatkan keamanan dan membatasi potensi kerusakan akibat aplikasi berbahaya atau rusak.
Salah satu keuntungan besar bagi pengguna dan administrator adalah Paket Flatpak diinstal dan diperbarui secara independen dari manajer paket distribusi.Anda dapat membuat aplikasi Flatpak berdampingan dengan paket asli tanpa mengganggu satu sama lain, dan bahkan mengelola beberapa versi aplikasi yang sama secara bersamaan.
Keuntungan dan kerugian Flatpak dibandingkan dengan format lainnya

Ekosistem GNU/Linux selalu memiliki beberapa sistem pengemasan: deb, rpm, AppImage, Snap, Flatpak… Masing-masing solusi memecahkan masalah distribusi perangkat lunak dengan caranya sendiri. Flatpak unggul terutama di desktop, dan bukan kebetulan jika banyak distribusi utama mendukungnya secara default.
Di antara yang utama Keunggulan Flatpak dari sudut pandang pengguna kita bisa menonjol:
- Instalasi sederhana dan universal: Dengan format paket tunggal, Anda dapat menginstal aplikasi yang sama pada distribusi yang berbeda (Debian, Fedora, openSUSE, Arch, dll.) selama Flatpak diaktifkan.
- Peningkatan isolasi dan keamanan: Aplikasi berjalan dalam kotak pasir dengan izin eksplisit, mengurangi risiko dan konflik antarprogram.
- Pembaruan otomatis dan terpusat: Dengan satu perintah Anda dapat memperbarui semua apps Flatpak, tanpa bergantung pada siklus distro.
- Koeksistensi beberapa versi: Dimungkinkan untuk menginstal lebih dari satu versi aplikasi yang sama, yang sangat berguna bagi pengembang atau lingkungan pengujian.
- Lebih sedikit masalah kompatibilitas: Ketergantungan dikontrol oleh paket itu sendiri dan/atau runtime, sehingga meminimalkan konflik dengan pustaka sistem.
Flatpak juga sangat menarik bagi pengembang. Memungkinkan Anda menerbitkan aplikasi secara langsung tanpa bergantung pada pengelola untuk mengemasnya untuk setiap distribusi.Setelah Anda mengunggah aplikasi Anda (misalnya, ke Flathub), setiap pengguna Linux dengan Flatpak yang diaktifkan dapat menginstalnya dengan satu atau dua perintah. perintahatau bahkan dari toko perangkat lunak grafis di lingkungan Anda.
Kedekatan ini berarti bahwa Versi baru aplikasi Anda dapat menjangkau pengguna dari berbagai distribusi secara bersamaan.Hal ini khususnya menarik dalam distribusi dengan siklus rilis lambat di mana paket resmi membutuhkan waktu lama untuk diperbarui. Lebih lanjut, lingkungan runtime menawarkan basis yang homogen, sehingga mengurangi jumlah kombinasi pustaka yang perlu didukung.
Tidak semuanya keuntungan. Ada Beberapa kekurangan dan kerugian yang perlu diingat:
- Ukuran paket: Paket Flatpak biasanya memakan lebih banyak ruang daripada paket asli tradisional karena memiliki dependensi tambahan atau berbagi runtime yang besar. Hal ini mengakibatkan lebih banyak unduhan dan peningkatan penggunaan disk.
- Sedikit penalti kinerja: Karena berjalan di kotak pasir dan memiliki lapisan abstraksi tambahan, dalam beberapa kasus mungkin ada dampak kecil pada kinerja, meskipun biasanya minimal bagi sebagian besar pengguna.
- Ketergantungan pada repositori Flatpak: Jika suatu aplikasi hanya didistribusikan melalui Flathub atau repositori Flatpak lainnya, Anda terikat pada repositori tersebut agar tetap aktif dan terkini.
- Kompleksitas pengemasan: Membuat Flatpak yang dibuat dengan baik, terutama untuk penerapan di Flathub, bisa jauh lebih melelahkan daripada yang terlihat pada awalnya, terutama terkait dependensi dan metadata.
Selain itu, jika dibandingkan dengan solusi lain seperti Snap, Sejujurnya, pengalaman berkemas dan membongkar barang bisa jadi agak membingungkan.Instruksi resminya agak tersebar, dan jika tujuan Anda adalah menerbitkan di Flathub, masih ada lebih banyak langkah dan persyaratan yang harus dipenuhi.
Cara kerja Flatpak pada tingkat teknis

Untuk memahami sepenuhnya cara membuat paket Flatpak, sangat membantu jika memiliki pemahaman yang jelas tentang arsitekturnya. Flatpak didasarkan pada dua bagian fundamental: runtime dan aplikasiRuntime adalah lingkungan eksekusi bersama, seperti org.gnome.Platform/x86_64/3.22, yang menyediakan basis umum pustaka dan komponen.
Aplikasi Flatpak mendeklarasikan dalam metadatanya runtime apa yang dibutuhkan untuk berfungsi?Dengan cara ini, beberapa aplikasi dapat menggunakan runtime yang sama, menghemat ruang, dan memastikan kompatibilitas. Hasilnya kira-kira seperti, "aplikasi tersebut bergantung pada platform yang stabil dan dikenal, dan semua yang tidak ada di platform tersebut dikemas dalam aplikasi itu sendiri."
Aplikasi berjalan di dalam kontainer terisolasi yang membatasi akses ke sumber daya pentingIsolasi ini dikelola melalui izin yang dapat dikonfigurasi: akses jaringan, direktori sistem berkas, perangkat input, audio (PulseAudio), server grafis (X11/Wayland), D-Bus untuk komunikasi antar-proses, dll.
Salah satu ide kuncinya adalah Departemen dikelola dengan cara yang lebih dapat diprediksiAlih-alih bergantung pada versi pustaka sistem, yang dapat sangat bervariasi antara distribusi dan versi, pengembang mengetahui terlebih dahulu runtime apa yang akan tersedia dan, jika sesuatu yang lebih baru atau lebih spesifik dibutuhkan, memasukkannya langsung dalam paket.
Distribusi biasanya dilakukan melalui repositori seperti Flathub, yang bertindak sebagai repositori terpusat untuk aplikasi FlatpakDari sana, pengguna dapat mencari, mengunduh, dan memasang aplikasi dengan satu perintah atau dari penyimpanan grafis. Repositori khusus juga dapat dibuat, yang sangat berguna di lingkungan perusahaan atau pendidikan di mana aplikasi diterapkan secara terkendali.
Prasyarat untuk membuat paket Flatpak
Sebelum Anda mulai mengemas, Anda harus memahami dengan jelas apa saja yang dibutuhkan Flatpak agar semuanya berfungsi. Ada tiga persyaratan dasar: menginstal Flatpak, memiliki runtime yang sesuai, dan mendefinisikan struktur paket..
Dalam hampir semua distribusi modern Anda dapat Instal Flatpak dari manajer paket distro itu sendiriDi Arch Linux, misalnya, jika Anda menginstal GNOME dengan grup paket jembalang y gnome-ekstraFlatpak diinstal secara otomatis sebagai dependensi. Jika tidak, Anda dapat menginstalnya secara eksplisit menggunakan pengelola paket distro Anda (pacman, apt, dnf, zypper, dll.).
Langkah kedua adalah konfigurasikan setidaknya satu lingkungan runtimeUntuk sebagian besar aplikasi desktop, biasanya mengandalkan platform seperti org.gnome.Platform atau yang disediakan oleh KDE, selalu dalam arsitektur dan versi yang akan Anda gunakan, misalnya x86_64/3.22.
Setelah Anda memiliki Flatpak dan runtime siap, saatnya untuk memikirkan struktur paket dan nama aplikasi yang sepenuhnya memenuhi syaratFlatpak menggunakan konvensi jenis com.distribuidor.App o org.test.HelloIni mirip dengan pengidentifikasi domain terbalik. Pengidentifikasi ini akan digunakan di semua perintah dan dalam manifes.
Terakhir, Anda akan memerlukan alat pengembangan yang sesuai dengan bahasa atau teknologi Anda, karena Bagian dari proses ini melibatkan kompilasi atau persiapan biner yang kemudian akan dimasukkan ke dalam wadah FlatpakTidak sama dengan mengemas cangkang kecil naskah daripada aplikasi kompleks dalam C++, Java, Ular sanca atau Elektron.
Struktur dasar paket Flatpak
Paket Flatpak bukan hanya biner. Ini mencakup beberapa elemen penting yang menjelaskan aplikasi dan memungkinkannya untuk diintegrasikan dengan desktop.Komponen umum yang menyusun paket Flatpak meliputi:
- AppData (metadata aplikasi): File informasi tentang aplikasi (biasanya dalam format XML) yang mencakup deskripsi, tangkapan layar, kategori, tautan ke situs web resmi, dll. Ini penting bagi toko perangkat lunak untuk menampilkan aplikasi dengan benar.
- Ikon dalam berbagai ukuran: Gambar diadaptasi untuk berbagai kepadatan layar, termasuk tampilan beresolusi tinggi. Gambar-gambar ini dipasang di jalur standar yang dikenali oleh lingkungan desktop.
- file .desktop: Pintasan yang memungkinkan Anda meluncurkan aplikasi dari menu, peluncur aplikasi, atau dok lingkungan desktop.
- Konfigurasi D-Bus dan layanan lainnya: Definisi untuk komunikasi dengan bus pesan sistem, serta integrasi dengan PulseAudio untuk suara dan X11/Wayland untuk representasi grafis.
- File khusus aplikasi: File yang dapat dieksekusi, skrip, pustaka tambahan, sumber daya grafis, dll. Singkatnya, semua yang diperlukan agar program Anda berfungsi.
Untuk lebih memahami strukturnya, bayangkan Anda sedang membuat contoh yang sangat sederhana, "Halo dunia" yang dikemas dengan Flatpak. Anda bisa memulai dengan membuat hierarki direktori seperti ini:
mkdir hello
mkdir hello/files
mkdir hello/files/bin
mkdir hello/export
Di dalam folder hello/files/bin apakah kamu akan menempatkan yang dapat dieksekusi atau skrip yang ingin Anda jalankan, dan di hello Anda akan memiliki metadata Flatpak yang umum, seperti file aplikasi dengan bagian [Application] di mana nama dan urutan peluncuran ditentukan.
Contoh metadata yang disederhanakan mungkin terlihat seperti ini, di mana Pengenal, waktu proses, dan perintah utama yang akan dieksekusi didefinisikan.:
[Application]
name=org.test.Hello
runtime=org.gnome.Platform/x86_64/3.22
command=hello.sh
Dan file tersebut hello.sh bisa menjadi skrip shell sederhana dengan konten ini, yang akan dipasang di dalam files/bin:
#!/bin/sh
echo "Hello world, from a sandbox"
Contoh ini sangat mendasar, tetapi Ini menggambarkan gagasan bahwa paket Flatpak berisi, di satu sisi, file aplikasi dan, di sisi lain, semua informasi yang diperlukan untuk mengintegrasikan dan menjalankannya dengan benar. dalam lingkungan eksekusi tertentu.
Langkah-langkah umum untuk membuat paket Flatpak langkah demi langkah
Berdasarkan semua hal di atas, kita dapat meringkas alur dasar untuk mengemas aplikasi dalam Flatpak. Langkah-langkah ini berlaku untuk pengujian lokal dan publikasi yang lebih serius. (meskipun, seperti yang akan kita lihat, Flathub menambahkan persyaratan tambahan):
- Instal Flatpak pada distribusi Anda Jika Anda belum memilikinya, gunakan pengelola paket asli (apt, dnf, pacman, dll.).
- Konfigurasikan runtime yang sesuaiMisalnya, dengan menambahkan Flathub sebagai repositori dan mengunduh runtime yang diperlukan untuk aplikasi Anda.
- Tentukan struktur paket dan pengenal lengkapnya (dari jenis
com.tuempresa.TuApp), selain membuat folder file, metadata, ikon, AppData, dll. - Bangun paket dan ekspor ke repositori lokal atau jarak jauh, misalnya dengan perintah seperti
flatpak build-export repo helloDimanarepoadalah folder repositori danhelloIni adalah direktori dengan build. - Instal paket dari repositori itu dan ujilah. untuk memverifikasi bahwa semuanya berfungsi sebagaimana mestinya dalam kotak pasir.
Perintah flatpak build-export dapat digabungkan dengan tanda tangan GPG untuk untuk menjamin keaslian pengembang dan integritas paketHal ini terutama menarik ketika mendistribusikan aplikasi di lingkungan di mana verifikasi kriptografi penting.
Ingat itu Langkah-langkah di atas menggambarkan alur kerja yang cukup mudah dan berorientasi lokalKetika kita berbicara tentang Flathub, ceritanya menjadi sedikit lebih rumit, karena repositori tersebut tidak menerima paket yang telah dikompilasi sebelumnya, tetapi mengkompilasi file Flatpak di servernya sendiri dengan akses jaringan terbatas.
Instal, jalankan, dan kelola aplikasi Flatpak dari terminal
Setelah Anda memiliki paket Anda, atau ingin mencoba yang lain, Mengelola aplikasi Flatpak dari baris perintah cukup sederhanaMari kita lihat beberapa contoh umum yang akan membantu Anda memahami bagaimana paket Anda sendiri akan digunakan setelah dikemas.
Bayangkan Anda telah membuat repositori kecil yang disebut tutorial-repo yang berisi contoh aplikasi Anda org.test.Hello. Untuk menambahkan repositori itu dan menginstal aplikasi hanya untuk pengguna AndaAnda dapat menggunakan:
flatpak --user remote-add --no-gpg-verify tutorial-repo repo
flatpak --user install tutorial-repo org.test.Hello
flatpak run org.test.Hello
Parameter --user menunjukkan bahwa instalasi dilakukan di direktori pribadi pengguna, tanpa memerlukan izin administrator dan tanpa memengaruhi akun sistem lainnyaIdeal untuk lingkungan multi-pengguna di mana setiap orang dapat memutuskan aplikasi Flatpak mana yang mereka inginkan.
Contoh klasiknya adalah memasang permainan seperti GNOME Chess hanya untuk pengguna Anda. Perintahnya mungkin terlihat seperti ini (dengan asumsi Anda menggunakan Flathub sebagai repositori Anda):
flatpak install --user https://dl.flathub.org/repo/appstream/org.gnome.Chess.flatpakref
Anda dapat menginstal aplikasi dengan langsung menentukan berkas referensi .flatpakref, seperti halnya dengan GIMP dari Flathub, menggunakan sesuatu seperti:
flatpak install https://dl.flathub.org/repo/appstream/org.gimp.GIMP.flatpakref
Untuk menjaga semuanya tetap terkini, perintah flatpak update Bertanggung jawab untuk memperbarui aplikasi yang terinstal.Anda dapat menjalankannya secara berkala atau bahkan mengintegrasikannya ke dalam skrip administrasi, seperti yang dilakukan di beberapa lingkungan pendidikan atau perusahaan di mana aplikasi diterapkan dalam mode sistem untuk semua pengguna.
Selain menginstal dan memperbarui, Flatpak memungkinkan Anda Daftar, hapus instalan, dan bersihkan aplikasi dan runtime yang tidak lagi Anda gunakan. Perintah pembersihan sangat berguna untuk menghapus pustaka dan dependensi yang tidak terpakai, sehingga membebaskan ruang disk setelah menghapus instalasi aplikasi Flatpak.
Flathub, repositori, dan penerapan aplikasi Flatpak
Flathub telah memantapkan dirinya sebagai repositori utama dan paling terkenal dari aplikasi FlatpakIni adalah tempat sebagian besar pengguna mencari program baru dan tempat banyak pengembang menerbitkan versi terbaru aplikasi desktop mereka.
Di Flathub Anda dapat menemukan berbagai macam perangkat lunak, diatur berdasarkan kategori seperti audio dan video, pengembangan, pendidikan, permainan, grafik, komunikasi, produktivitas, sains, utilitas, dll.Ini mencakup aplikasi terkenal seperti VLC, GIMP, LibreOffice, Audacity, SteamInkscape, Blender, Signal, Telegram, Calibre dan masih banyak lagi.
Dari situs web Flathub Anda dapat Temukan aplikasi, klik tombol INSTALL dan dapatkan referensinya .flatpakref, yang kemudian diteruskan ke perintah flatpak installReferensi ini berisi informasi yang diperlukan Flatpak untuk mengetahui dari remote mana untuk mengunduh aplikasi, runtime mana yang akan digunakan, dll.
Jika Anda berada di lingkungan yang lebih terkendali, seperti perusahaan atau sekolah, Anda juga dapat membuat repositori Anda sendiri dan menerbitkan aplikasi Anda di dalamnyaDi banyak lembaga pendidikan, misalnya, Ansible atau alat otomatisasi lainnya digunakan untuk menyebarkan aplikasi Flatpak dalam mode sistem, sehingga tersedia untuk semua pengguna komputer.
Instalasi mode sistem biasanya memerlukan hak akses administratif, tetapi Ia menawarkan keuntungan bahwa aplikasi disediakan secara terpusat.Untuk bagiannya, instalasi dengan --user Ideal untuk memberikan fleksibilitas kepada setiap orang tanpa mengubah perangkat lunak dasar mesin.
Buat paket Flatpak untuk menerbitkannya di Flathub
Inilah salah satu bagian yang paling rumit. Membangun Flatpak yang berfungsi di mesin Anda hanyalah setengah dari ceritanyaJika Anda ingin menerbitkannya di Flathub, prosesnya memiliki persyaratan dan batasan tambahan yang harus Anda ketahui sejak awal agar tidak merasa frustrasi.
Untuk memulainya, Petunjuk pada situs web utama Flatpak berfokus pada alur pembangunan yang cukup "terbuka".Dalam lingkungan build tradisional, lingkungan build Anda dapat mengakses jaringan untuk mengunduh dependensi, mengkloning repositori, dan sebagainya. Namun, Flathub mengompilasi paket di servernya sendiri, dan proses build di sana tidak memiliki akses internet. Ini berarti semua yang Anda butuhkan harus dijelaskan dalam manifes dengan URL sumber yang terdefinisi dengan baik.
Dengan kata lain, jika aplikasi Anda bergantung pada beberapa pustaka atau modul eksternal, Anda perlu secara eksplisit menambahkan sumber untuk setiap dependensi dalam manifes Flatpak.bahkan jika Anda sudah memilikinya requirements.txt Dalam kasus Python atau berkas dependensi lain dalam teknologi Anda, ini mungkin memaksa Anda untuk menggunakan skrip pembantu (terkadang tidak dipoles) untuk menghasilkan bagian-bagian ini, dan Anda masih harus memeriksa hal-hal seperti dependensi build secara manual.
Konsekuensi praktisnya adalah bahwa Menyelesaikan semua dependensi dan membuat build offline berfungsi dapat memakan waktu berjam-jamHal ini terutama berlaku pada aplikasi yang kompleks atau yang memiliki banyak pustaka eksternal. Dalam beberapa bahasa pemrograman tingkat tinggi, seperti Python, menemukan semua dependensi build yang tepat bisa sangat membosankan.
Poin penting lainnya adalah itu Di Flathub Anda tidak dapat menggunakan sembarang runtime yang Anda inginkan.Anda hanya bisa mengandalkan runtime yang dihosting di Flathub itu sendiri, yang terkadang memaksa Anda untuk mengompilasi secara manual dan menyertakan lebih banyak dependensi daripada yang Anda inginkan. Hal ini melipatgandakan pekerjaan pengemasan dan jumlah hal yang harus Anda kelola dalam jangka panjang.
Selain manifesto dan dependensi, Flathub menuntut file metadata yang cukup rinciIni mencakup informasi seperti deskripsi detail, tangkapan layar, tautan, lisensi, kategori, dan, dalam banyak kasus, catatan rilis untuk setiap pembaruan. Hal ini memerlukan pemeliharaan berkelanjutan setiap kali Anda merilis versi baru.
Proses penyebarannya juga tidak mudah. Untuk menerbitkan ke Flathub, Anda perlu meminta repositori tertentu dalam organisasi Flathub di GitHub.Proses ini melibatkan peninjauan dan konfigurasi tindakan atau alur kerja yang terintegrasi dengan infrastruktur build Flathub. Dokumentasi menyebutkan GitHub Actions, tetapi tidak selalu menjelaskan secara rinci bagaimana tindakan ini sesuai dengan repositori resmi organisasi.
Karena semua alasan ini, beberapa pengembang, setelah pengujian, berkomentar bahwa Membuat Flatpak untuk Flathub bisa membuat frustrasi dan sangat memakan waktu.Hal ini mendorong pertimbangan format alternatif seperti Snap ketika tujuannya adalah penerapan yang lebih langsung dan tanpa hambatan. Meskipun demikian, keuntungan menjangkau basis pengguna yang sangat luas dan beragam distribusi membuat upaya ini sepadan dalam banyak kasus.
Penulis yang bersemangat tentang dunia byte dan teknologi secara umum. Saya suka berbagi ilmu melalui tulisan, dan itulah yang akan saya lakukan di blog ini, menunjukkan kepada Anda semua hal paling menarik tentang gadget, perangkat lunak, perangkat keras, tren teknologi, dan banyak lagi. Tujuan saya adalah membantu Anda menavigasi dunia digital dengan cara yang sederhana dan menghibur.