- Flatpak vam omogućuje pakiranje aplikacija i njihovih ovisnosti u prenosive, izolirane kontejnere za više distribucija. Linux.
- Flatpak paketi temelje se na dijeljenim okruženjima za izvršavanje, sveobuhvatnim metapodacima i jasnoj strukturi datoteka, ikona i AppData.
- Flathub djeluje kao središnje spremište za Flatpak aplikacije, iako njegov proces objavljivanja zahtijeva detaljne manifeste i kompilaciju bez pristupa mreži.

Ako radite s GNU/Linuxom i zainteresirani ste za distribuciju svojih aplikacija na jednostavan način, prije ili kasnije ćete naići na Flatpak. Ovaj format pakiranja postao je jedan od najpopularnijih načina isporuke desktop aplikacija. koji rade isto na gotovo svakoj distribuciji, bez problema s ovisnostima ili trenutnim upraviteljem paketa.
U ovom vodiču ćemo vidjeti Kako korak po korak, od nule i vrlo detaljno izraditi Flatpak paketVidjet ćete točno što je Flatpak, zašto je danas toliko važan, što trebate pripremiti u svom okruženju, kako strukturirati svoj paket, koji su vam metapodaci potrebni, kako ga instalirati, testirati, izvesti u repozitorij, pa čak i što znači prenijeti ga na Flathub. Sve s praktičnim pristupom i na pristupačan način kako vam ne bi bilo previše.
Što je Flatpak i zašto je postao toliko važan?

Flatpak je tehnologija pakiranja i distribucije softvera temeljena na kontejnerima za LinuxIdeja je vrlo jednostavna, ali moćna: umjesto da ovisi o upravitelju paketa svake distribucije, aplikacija je pakirana zajedno s bibliotekama i ovisnostima koje su joj potrebne te se pokreće u izoliranom okruženju (sandboxu) koje jamči dosljedno ponašanje na bilo kojoj kompatibilnoj distribuciji.
U praksi, Flatpak paket uključuje aplikaciju i sve biblioteke potrebne za njezino funkcioniranje.bez ometanja ostatka programa sustava. Time se izbjegava klasični pakao ovisnosti, smanjuju se sukobi i daje programeru izravnu kontrolu nad distribucijom i ažuriranjem aplikacije, bez čekanja da je održavatelj distribucije zapakira.
Da bi to postigao, Flatpak se oslanja na dijeljena okruženja za izvođenjeOvi runtimeovi pružaju zajedničku osnovu (na primjer, određenu verziju GNOME platforme) na kojoj se izvršava više aplikacija. Na taj način ne morate pakirati apsolutno sve u svaku aplikaciju, već samo ono što već nije uključeno u runtime, što štedi prostor i pojednostavljuje održavanje.
Nadalje, Flatpak aplikacije rade na sandbox s vlastitim sustavom dozvolaOvaj model vam omogućuje kontrolu pristupa resursima kao što su datotečni sustav, mreža, Bluetooth, audio ili grafički poslužitelj (X11/Wayland). Izolacija poboljšava sigurnost i ograničava potencijalnu štetu od zlonamjerne ili oštećene aplikacije.
Jedna od velikih prednosti za korisnike i administratore je ta što Flatpak paketi se instaliraju i ažuriraju neovisno o upravitelju paketa distribucije.Možete imati svoje Flatpak aplikacije koje koegzistiraju s izvornim paketima bez međusobnog ometanja, pa čak i istovremeno upravljati s više verzija iste aplikacije.
Prednosti i nedostaci Flatpaka u usporedbi s drugim formatima

GNU/Linux ekosustav oduvijek je imao više sustava pakiranja: deb, rpm, AppImage, Snap, Flatpak… Svaki od njih rješava problem distribucije softvera na svoj način. Flatpak se posebno ističe na računalu, i nije slučajno da ga mnoge velike distribucije podržavaju po defaultu.
Među glavnim Prednosti Flatpaka s korisničke perspektive možemo se istaknuti:
- Jednostavna i univerzalna instalacija: S jednim formatom paketa možete instalirati istu aplikaciju na različite distribucije (Debian, Fedora, openSUSE, Arch, itd.) sve dok imaju omogućen Flatpak.
- Poboljšana izolacija i sigurnost: Aplikacije se izvode u sandboxu s eksplicitnim dozvolama, smanjujući rizike i sukobe između programa.
- Automatska i centralizirana ažuriranja: Jednom naredbom možete ažurirati sve svoje aplikacije Flatpak, bez ovisnosti o distribucijskom ciklusu.
- Koegzistencija više verzija: Moguće je imati instalirano više verzija iste aplikacije, što je vrlo korisno za razvojne programere ili testna okruženja.
- Manje problema s kompatibilnošću: Ovisnosti kontrolira sam paket i/ili runtime, čime se minimiziraju sukobi sa sistemskim bibliotekama.
Flatpak je također vrlo privlačan programerima. Omogućuje vam izravno objavljivanje aplikacije bez oslanjanja na održavatelja koji će je pakirati za svaku distribuciju.Nakon što prenesete svoju aplikaciju (na primjer na Flathub), bilo koji Linux korisnik s omogućenim Flatpakom može je instalirati s jednom ili dvije naredbe. naredbeili čak iz trgovine grafičkog softvera u vašem okruženju.
Ta neposrednost znači da Nova verzija vaše aplikacije može istovremeno doći do korisnika različitih distribucija.To je posebno zanimljivo u distribucijama sa sporim ciklusima izdavanja gdje ažuriranje službenih paketa traje dugo. Nadalje, runtime okruženje nudi homogenu bazu, čime se smanjuje broj kombinacija biblioteka koje je potrebno podržati.
To nisu sve prednosti. Postoje Neki nedostaci i troškovi koje treba imati na umu:
- Veličine pakiranja: Flatpak paketi obično zauzimaju više prostora od tradicionalnih izvornih paketa jer uključuju dodatne ovisnosti ili dijele velika vremena izvođenja. To rezultira većim brojem preuzimanja i povećanom upotrebom diska.
- Blago smanjenje performansi: Budući da se izvodi u sandboxu i ima dodatne slojeve apstrakcije, u nekim slučajevima može postojati mali utjecaj na performanse, iako je on obično minimalan za većinu korisnika.
- Ovisnost o Flatpak repozitorijima: Ako se aplikacija distribuira samo putem Flathuba ili nekog drugog Flatpak repozitorija, vezani ste za to da se taj repozitorij održava aktivnim i ažurnim.
- Složenost pakiranja: Izrada dobro napravljenog Flatpaka, posebno za implementaciju na Flathubu, može biti puno zahtjevnija nego što se u početku čini, posebno u pogledu ovisnosti i metapodataka.
Nadalje, u usporedbi s drugim rješenjima poput Snapa, Iskreno, iskustvo pakiranja i raspakiranja može biti donekle zbunjujuće.Službene upute su donekle raspršene, a ako vam je cilj objavljivati na Flathubu, još uvijek postoji više koraka i zahtjeva koje treba ispuniti.
Kako Flatpak funkcionira na tehničkoj razini

Za potpuno razumijevanje kako stvoriti Flatpak paket, vrlo je korisno imati jasno razumijevanje njegove arhitekture. Flatpak se temelji na dva temeljna dijela: runtime-ovima i aplikacijama.Runtime je dijeljeno okruženje za izvršavanje, kao što je org.gnome.Platform/x86_64/3.22, koja pruža zajedničku bazu biblioteka i komponenti.
Flatpak aplikacija u svojim metapodacima deklarira Koliko vremena izvođenja je potrebno za funkcioniranjeNa taj način više aplikacija može koristiti isto okruženje za izvođenje, čime se štedi prostor i osigurava kompatibilnost. Rezultat je nešto poput: „aplikacija se oslanja na stabilnu i poznatu platformu, a sve što nije na toj platformi pakirano je unutar same aplikacije.“
Aplikacije se izvršavaju unutar izolirani kontejneri koji ograničavaju pristup kritičnim resursimaOva izolacija se upravlja putem konfiguriranih dozvola: pristup mreži, direktoriji datotečnog sustava, ulazni uređaji, zvuk (PulseAudio), grafički poslužitelj (X11/Wayland), D-Bus za međuprocesnu komunikaciju itd.
Ključna ideja je da Odjelima se upravlja na predvidljiviji načinUmjesto oslanjanja na verzije sistemskih biblioteka, koje se mogu uvelike razlikovati između distribucija i verzija, programer unaprijed zna koje će okruženje za izvođenje biti dostupno i, ako je potrebno nešto novije ili specifičnije, uključuje to izravno u paket.
Distribucija se obično vrši putem repozitorija kao što su Flathub, koji djeluje kao centralizirano spremište za Flatpak aplikacijeOdatle korisnici mogu pretraživati, preuzimati i instalirati aplikacije jednom naredbom ili iz grafičke trgovine. Također je moguće stvoriti prilagođene repozitorije, što je vrlo korisno u korporativnim ili obrazovnim okruženjima gdje se aplikacije implementiraju na kontroliran način.
Preduvjeti za izradu Flatpak paketa
Prije nego što počnete pakirati, morate biti jasni oko toga što Flatpak zahtijeva da bi sve funkcioniralo. Postoje tri osnovna zahtjeva: instaliran Flatpak, odgovarajuće okruženje za izvođenje i definiranje strukture paketa..
U gotovo svakoj modernoj distribuciji možete Instalirajte Flatpak iz upravitelja paketa distribucijeU Arch Linuxu, na primjer, ako instalirate GNOME s grupama paketa gnom y gnome-extraFlatpak se instalira automatski kao ovisnost. Ako ne, možete ga eksplicitno instalirati pomoću upravitelja paketa vaše distribucije (pacman, apt, dnf, zypper, itd.).
Drugi korak je konfigurirajte barem jedno okruženje za izvođenjeZa većinu desktop aplikacija uobičajeno je oslanjanje na platforme kao što su org.gnome.Platform ili one koje pruža KDE, uvijek u arhitekturi i verziji koju ćete koristiti, na primjer x86_64/3.22.
Nakon što imate Flatpak i okruženje za izvođenje spremno, vrijeme je da razmislite o strukturi paketa i u potpuno kvalificiranom nazivu aplikacijeFlatpak koristi konvenciju tipa com.distribuidor.App o org.test.HelloOvo je slično obrnutim identifikatorima domene. Ovaj identifikator će se koristiti u svim naredbama i u manifestu.
Konačno, trebat će vam razvojni alati koji odgovaraju vašem jeziku ili tehnologiji, jer Dio procesa uključuje kompajliranje ili pripremu binarnih datoteka koje će se zatim staviti u Flatpak kontejner.Nije isto pakirati malu školjku rukopis nego složena aplikacija u C++, Javi, Piton ili Elektron.
Osnovna struktura Flatpak paketa
Flatpak paket nisu samo binarne datoteke. Uključuje nekoliko bitnih elemenata koji opisuju aplikaciju i omogućuju njezinu integraciju s radnom površinom.Tipične komponente koje čine Flatpak paket uključuju:
- AppData (metapodaci aplikacije): Datoteke s informacijama o aplikaciji (obično u XML formatu) koje uključuju opis, snimke zaslona, kategoriju, poveznicu na službenu web stranicu itd. One su bitne kako bi trgovine softverom ispravno prikazale aplikaciju.
- Ikone u raznim veličinama: Slike prilagođene različitim gustoćama zaslona, uključujući zaslone visoke rezolucije. Instaliraju se u standardne putanje koje prepoznaje okruženje radne površine.
- .desktop datoteke: Prečaci koji omogućuju pokretanje aplikacije iz izbornika, pokretača aplikacija ili docka okruženja radne površine.
- Konfiguracija D-Bus-a i ostale usluge: Definicije za komunikaciju sa sistemskom sabirnicom poruka, kao i integracija s PulseAudio za zvuk i X11/Wayland za grafički prikaz.
- Datoteke specifične za aplikaciju: Izvršne datoteke, skripte, dodatne biblioteke, grafički resursi itd. Ukratko, sve što je potrebno za rad vašeg programa.
Kako biste bolje razumjeli strukturu, zamislite da stvarate vrlo jednostavan primjer, "Pozdrav svijete" zapakiran s Flatpakom. Možete početi stvaranjem hijerarhije direktorija poput ove:
mkdir hello
mkdir hello/files
mkdir hello/files/bin
mkdir hello/export
U mapi hello/files/bin biste li stavili izvršna datoteka ili skripta koje želite pokrenuti, i u hello Imali biste tipične Flatpak metapodatke, kao što je datoteka aplikacije s odjeljkom [Application] gdje su navedeni naziv i redoslijed lansiranja.
Pojednostavljeni primjer metapodataka mogao bi izgledati ovako, gdje Definirani su identifikator, vrijeme izvođenja i glavna naredba koja će se izvršiti.:
[Application]
name=org.test.Hello
runtime=org.gnome.Platform/x86_64/3.22
command=hello.sh
I dosje hello.sh mogao biti a jednostavna shell skripta s ovim sadržajem, koji bi bio instaliran unutar files/bin:
#!/bin/sh
echo "Hello world, from a sandbox"
Ovaj primjer je vrlo jednostavan, ali To ilustrira ideju da Flatpak paket sadrži, s jedne strane, datoteke aplikacije, a s druge strane sve informacije potrebne za njezinu ispravnu integraciju i pokretanje. unutar određenog izvršnog okruženja.
Opći koraci za izradu Flatpak paketa korak po korak
Na temelju svega navedenog, možemo sažeti osnovni tijek pakiranja aplikacije u Flatpaku. Ovi koraci vrijede i za lokalne testove i za ozbiljnije publikacije. (iako, kao što ćemo vidjeti, Flathub dodaje dodatne zahtjeve):
- Instalirajte Flatpak na svoju distribuciju Ako ga već nemate, koristite izvorni upravitelj paketa (apt, dnf, pacman, itd.).
- Konfigurirajte odgovarajuće okruženje za izvođenjeNa primjer, dodavanjem Flathuba kao repozitorija i preuzimanjem runtime okruženja potrebnog za vašu aplikaciju.
- Definirajte strukturu paketa i njegov puni identifikator (tipa
com.tuempresa.TuApp), uz stvaranje mapa datoteka, metapodataka, ikona, AppData itd. - Izgradite paket i izvezite ga u repozitorij lokalno ili udaljeno, na primjer naredbom poput
flatpak build-export repo hello, gdjerepoje mapa repozitorija ihelloTo je direktorij s datotekom build. - Instalirajte paket iz tog repozitorija i testirajte ga. kako bi se provjerilo da sve radi kako se očekuje unutar sandboxa.
Naredba flatpak build-export može se kombinirati s GPG potpisima za jamčiti autentičnost programera i integritet paketaTo je posebno zanimljivo prilikom distribucije aplikacija u okruženjima gdje je kriptografska provjera važna.
Imajte to na umu Gore navedeni koraci opisuju prilično jednostavan, lokalno orijentiran tijek radaKada govorimo o Flathubu, priča postaje malo kompliciranija, jer repozitorij ne prihvaća prethodno kompajlirane pakete, već kompajlira Flatpak datoteke na vlastitim poslužiteljima s ograničenim pristupom mreži.
Instalirajte, pokrenite i upravljajte Flatpak aplikacijama iz terminala
Nakon što dobijete svoj paket ili želite isprobati druge, Upravljanje Flatpak aplikacijama iz komandne linije je prilično jednostavnoPogledajmo neke tipične primjere koji će vam pomoći da shvatite kako bi se vaš vlastiti paket koristio nakon što bude zapakiran.
Zamislite da ste kreirali malo spremište pod nazivom tutorial-repo koji sadrži vaš primjer prijave org.test.Hello. Za dodavanje tog repozitorija i instaliranje aplikacije samo za vašeg korisnikaMogli biste koristiti:
flatpak --user remote-add --no-gpg-verify tutorial-repo repo
flatpak --user install tutorial-repo org.test.Hello
flatpak run org.test.Hello
Parametar --user označava da se instalacija izvodi u osobnom direktoriju korisnika, bez potrebe za administratorskim dozvolama i bez utjecaja na ostale sistemske računeIdealan je za okruženja s više korisnika gdje svaka osoba može odlučiti koje Flatpak aplikacije želi imati.
Klasičan primjer je instaliranje igre poput GNOME Chess samo za vašeg korisnika. Naredba bi mogla izgledati ovako (pod pretpostavkom da koristite Flathub kao repozitorij):
flatpak install --user https://dl.flathub.org/repo/appstream/org.gnome.Chess.flatpakref
Aplikacije možete instalirati izravnim navođenjem referentna datoteka .flatpakref, kao što je slučaj s GIMP iz Flathuba, koristeći nešto poput:
flatpak install https://dl.flathub.org/repo/appstream/org.gimp.GIMP.flatpakref
Da bi sve bilo ažurno, naredba flatpak update Odgovoran je za ažuriranje instaliranih aplikacija.Možete ga periodički pokretati ili čak integrirati u administratorske skripte, kao što se to radi u nekim obrazovnim ili korporativnim okruženjima gdje se aplikacije implementiraju u sistemskom načinu rada za sve korisnike.
Osim instaliranja i ažuriranja, Flatpak vam omogućuje Popis, deinstalacija i čišćenje aplikacija i okruženja za izvođenje koje više ne koristite. Naredba cleanup posebno je korisna za brisanje napuštenih biblioteka i ovisnosti, oslobađajući prostor na disku nakon deinstalacije Flatpak aplikacija.
Flathub, repozitoriji i implementacija Flatpak aplikacija
Flathub se etablirao kao glavni i najpoznatiji repozitorij Flatpak aplikacijaTo je mjesto gdje većina korisnika traži nove programe i gdje mnogi programeri objavljuju ažurirane verzije svojih desktop aplikacija.
Na Flathubu možete pronaći ogroman izbor softvera, organizirano po kategorijama kao što su audio i video, razvoj, obrazovanje, igre, grafika, komunikacija, produktivnost, znanost, uslužni programi itd.Uključuje poznate aplikacije kao što su VLC, GIMP, LibreOffice, Audacity, ParnaInkscape, Blender, Signal, Telegram, Calibre i mnogi drugi.
S web stranice Flathub možete Pronađite aplikaciju, kliknite gumb INSTALIRAJ i preuzmite referencu .flatpakref, koji se zatim prosljeđuje naredbi flatpak installOva referenca sadrži informacije potrebne Flatpaku da zna s kojeg daljinskog upravljača preuzeti aplikaciju, koje okruženje za izvođenje koristiti itd.
Ako se nalazite u kontroliranijem okruženju, poput tvrtke ili škole, Također je moguće kreirati vlastite repozitorije i objavljivati svoje aplikacije u njimaU mnogim obrazovnim ustanovama, na primjer, Ansible ili drugi alati za automatizaciju koriste se za implementaciju Flatpak aplikacija u sistemskom načinu rada, tako da su dostupne svim korisnicima računala.
Instalacija u sistemskom načinu rada obično zahtijeva administratorske privilegije, ali Nudi prednost što su aplikacije dostupne na centraliziran način.Sa svoje strane, instalacija s --user Idealan je za pružanje fleksibilnosti svakoj osobi bez mijenjanja osnovnog softverskog seta stroja.
Izradite Flatpak paket za objavu na Flathubu
Ovdje dolazi jedan od najosjetljivijih dijelova. Izrada funkcionalnog Flatpaka na vašem računalu je samo pola pričeAko ga želite objaviti na Flathubu, postupak ima dodatne zahtjeve i ograničenja kojih biste trebali biti svjesni od samog početka kako biste izbjegli frustracije.
Za početak Upute na glavnoj Flatpak web stranici usredotočuju se na prilično "otvoreni" tijek izgradnje.U tradicionalnom okruženju za izradu, vaše okruženje za izradu može pristupiti mreži za preuzimanje ovisnosti, kloniranje repozitorija i tako dalje. Međutim, Flathub kompajlira pakete na vlastitim poslužiteljima, a proces izrade tamo nema pristup internetu. To znači da sve što vam je potrebno mora biti opisano u manifestu s dobro definiranim izvornim URL-ovima.
Drugim riječima, ako vaša aplikacija ovisi o više vanjskih biblioteka ili modula, Morate eksplicitno dodati izvore za svaku ovisnost u Flatpak manifestu.čak i ako već imate jedan requirements.txt U slučaju Pythona ili neke druge datoteke ovisnosti u vašoj tehnologiji, ovo vas može prisiliti da koristite (ponekad nedovršene) pomoćne skripte za generiranje ovih odjeljaka, a i dalje ćete morati ručno provjeravati stvari poput ovisnosti izgradnje.
Praktična posljedica je da Rješavanje svih ovisnosti i pokretanje offline verzije može potrajati satimaTo se posebno odnosi na složene aplikacije ili one s mnogo vanjskih biblioteka. U nekim jezicima visoke razine, kao što je Python, pronalaženje svih ispravnih ovisnosti izgradnje može biti prilično zamorno.
Druga važna stvar je ta U Flathubu ne možete koristiti bilo koje okruženje za izvođenje koje želite.Možete se osloniti samo na okruženja za izvođenje hostana na samom Flathubu, što vas ponekad prisiljava da ručno kompajlirate i uključujete više ovisnosti nego što biste željeli. To umnožava posao pakiranja i količinu stvari koje morate dugoročno održavati.
Uz manifest i ovisnosti, Flathub zahtijeva prilično detaljna datoteka s metapodacimaTo uključuje informacije poput detaljnog opisa, snimki zaslona, poveznica, licenci, kategorija i, u mnogim slučajevima, bilješki o izdanju za svako ažuriranje. To zahtijeva kontinuirano održavanje svaki put kada objavite novu verziju.
Ni sam proces implementacije nije trivijalan. Za objavljivanje na Flathubu, potrebno je zatražiti određeni repozitorij unutar Flathub organizacije na GitHubu.To uključuje prolazak kroz proces pregleda i konfiguriranje akcija ili tijekova rada koji se integriraju s Flathubovom infrastrukturom za izgradnju. Dokumentacija spominje GitHub akcije, ali ne objašnjava uvijek jasno kako se te akcije uklapaju u službeni repozitorij organizacije.
Zbog svih ovih razloga, neki programeri, nakon testiranja, komentiraju da Izrada Flatpaka za Flathub može biti frustrirajuća i oduzima puno vremena.To je dovelo do razmatranja alternativnih formata poput Snapa kada je cilj izravnija i manje nesmetana implementacija. Unatoč tome, prednost dosezanja vrlo široke korisničke baze i višestrukih distribucija čini trud vrijednim u mnogim slučajevima.
Strastveni pisac o svijetu bajtova i tehnologije općenito. Volim dijeliti svoje znanje pisanjem, a to je ono što ću učiniti na ovom blogu, pokazati vam sve najzanimljivije stvari o gadgetima, softveru, hardveru, tehnološkim trendovima i još mnogo toga. Moj cilj je pomoći vam da se snađete u digitalnom svijetu na jednostavan i zabavan način.