Jak krok po kroku utworzyć pakiet Flatpak w systemie Linux

Ostatnia aktualizacja: 04/12/2025
Autor: Isaac
  • Flatpak umożliwia pakowanie aplikacji i ich zależności do przenośnych, odizolowanych kontenerów na potrzeby wielu dystrybucji. Linux.
  • Pakiety Flatpak opierają się na współdzielonych środowiskach wykonawczych, kompleksowych metadanych i przejrzystej strukturze plików, ikon i AppData.
  • Flathub pełni funkcję centralnego repozytorium aplikacji Flatpak, chociaż proces publikacji wymaga szczegółowych manifestów i kompilacji bez dostępu do sieci.

Przewodnik krok po kroku dotyczący tworzenia pakietu Flatpak

Jeśli pracujesz z GNU/Linux i zależy Ci na łatwej dystrybucji aplikacji, na pewno natkniesz się na Flatpak. Ten format pakietów stał się jednym z najpopularniejszych sposobów dostarczania aplikacji desktopowych , które działają tak samo w niemal każdej dystrybucji, bez konieczności zmagania się z zależnościami lub obecnym menedżerem pakietów.

W tym przewodniku pokażemy, jak krok po kroku, od podstaw i z wielką dbałością o szczegóły, stworzyć pakiet Flatpak . Dowiesz się dokładnie, czym jest Flatpak, dlaczego jest tak ważny w dzisiejszych czasach, co należy przygotować w swoim środowisku, jak ustrukturyzować pakiet, jakich metadanych potrzebujesz, jak go zainstalować, przetestować, wyeksportować do repozytorium, a nawet co oznacza przesłanie go do Flathuba. Wszystko to przedstawione jest w praktyczny sposób i w przystępnym stylu, aby nie przytłoczyć.

Czym jest Flatpak i dlaczego stał się tak ważny?

Czym jest Flatpak i jak działa?

Flatpak to oparta na kontenerach technologia pakowania i dystrybucji oprogramowania dla systemu Linux . Pomysł jest bardzo prosty, ale skuteczny: zamiast polegać na menedżerze pakietów każdej dystrybucji, aplikacja jest pakowana wraz z potrzebnymi bibliotekami i zależnościami, a następnie uruchamiana w środowisku testowym, które gwarantuje spójne działanie w każdej kompatybilnej dystrybucji.

W praktyce pakiet Flatpak zawiera aplikację i wszystkie biblioteki niezbędne do jej działania , bez zakłócania pracy innych programów w systemie. Pozwala to uniknąć klasycznego piekła zależności, zmniejsza liczbę konfliktów i daje programiście bezpośrednią kontrolę nad sposobem dystrybucji i aktualizacji aplikacji, bez konieczności czekania na spakowanie jej przez administratora dystrybucji.

Aby to osiągnąć, Flatpak opiera się na współdzielonych środowiskach wykonawczych . Stanowią one wspólną bazę (na przykład określoną wersję platformy GNOME), na której działa wiele aplikacji. Dzięki temu nie trzeba pakować absolutnie wszystkiego do każdej aplikacji, a jedynie to, co nie jest już zawarte w środowisku wykonawczym, co oszczędza miejsce i upraszcza konserwację.

Co więcej, aplikacje Flatpak działają w środowisku sandbox z własnym systemem uprawnień . Model ten pozwala kontrolować dostęp do zasobów, takich jak system plików, sieć, Bluetooth, dźwięk i serwer graficzny (X11/Wayland). Ta izolacja zwiększa bezpieczeństwo i ogranicza potencjalne szkody wyrządzone przez złośliwą lub uszkodzoną aplikację.

Jedną z głównych zalet dla użytkowników i administratorów jest to, że pakiety Flatpak są instalowane i aktualizowane niezależnie od menedżera pakietów dystrybucji . Aplikacje Flatpak mogą współistnieć z pakietami natywnymi bez wzajemnego zakłócania się, a nawet zarządzać wieloma wersjami tej samej aplikacji jednocześnie.

Zalety i wady formatu Flatpak w porównaniu z innymi formatami

Zalety i wady Flatpak

Ekosystem GNU/Linux zawsze posiadał wiele systemów pakietów: deb, rpm, AppImage, Snap, Flatpak… Każdy z nich rozwiązuje problem dystrybucji oprogramowania na swój sposób. Flatpak wyróżnia się szczególnie w środowisku graficznym i nie jest przypadkiem, że wiele głównych dystrybucji domyślnie go obsługuje.

Z punktu widzenia użytkownika, do głównych zalet Flatpak możemy zaliczyć:

  • Prosta i uniwersalna instalacja: Korzystając z jednego formatu pakietu, możesz zainstalować tę samą aplikację w różnych dystrybucjach (Debian, Fedora, openSUSE, Arch itd.), pod warunkiem że obsługują one technologię Flatpak.
  • Lepsza izolacja i bezpieczeństwo: Aplikacje działają w środowisku testowym z jawnymi uprawnieniami, co ogranicza ryzyko i konflikty między programami.
  • Automatyczne i scentralizowane aktualizacje: Jednym poleceniem możesz zaktualizować wszystkie swoje mobilne i webowe Flatpak, niezależnie od cyklu dystrybucyjnego.
  • Współistnienie wielu wersji: Możliwe jest zainstalowanie więcej niż jednej wersji tej samej aplikacji, co jest bardzo przydatne dla programistów i środowisk testowych.
  • Mniej problemów ze zgodnością: Zależności są kontrolowane przez sam pakiet i/lub środowisko wykonawcze, co minimalizuje konflikty z bibliotekami systemowymi.

Dla programistów Flatpak jest również bardzo atrakcyjny. Pozwala na publikację aplikacji bezpośrednio, bez konieczności korzystania z usług osoby zarządzającej pakietem dla każdej dystrybucji . Po przesłaniu aplikacji (na przykład do Flathuba), każdy użytkownik Linuksa z włączonym Flatpakiem może ją zainstalować za pomocą jednego lub dwóch poleceń , a nawet ze sklepu z oprogramowaniem graficznym w swoim środowisku.

Ta natychmiastowość oznacza, że ​​nowa wersja aplikacji może dotrzeć do użytkowników w różnych dystrybucjach jednocześnie , co jest szczególnie przydatne w dystrybucjach o powolnym cyklu wydawniczym, gdzie aktualizacja oficjalnych pakietów zajmuje dużo czasu. Co więcej, środowisko uruchomieniowe oferuje jednorodną bazę, zmniejszając tym samym liczbę obsługiwanych kombinacji bibliotek.

To nie wszystkie zalety. Są też pewne wady i ograniczenia, które warto wziąć pod uwagę :

  • Rozmiary opakowań: Pakiety Flatpak zazwyczaj zajmują więcej miejsca niż tradycyjne pakiety natywne, ponieważ zawierają dodatkowe zależności lub współdzielą duże środowiska uruchomieniowe. To powoduje większą liczbę pobrań i większe wykorzystanie dysku.
  • Niewielki spadek wydajności: Ponieważ działa w środowisku testowym i ma dodatkowe warstwy abstrakcji, w niektórych przypadkach może wystąpić niewielki wpływ na wydajność, choć dla większości użytkowników jest on zazwyczaj minimalny.
  • Zależność od repozytoriów Flatpak: Jeśli aplikacja jest dystrybuowana wyłącznie za pośrednictwem Flathub lub innego repozytorium Flatpak, musisz mieć pewność, że repozytorium będzie aktywne i aktualne.
  • Złożoność pakowania: Stworzenie dobrze zaprojektowanego Flatpaka, zwłaszcza do wdrożenia na platformie Flathub, może być o wiele bardziej pracochłonne, niż mogłoby się wydawać na pierwszy rzut oka, zwłaszcza jeśli chodzi o zależności i metadane.
  Jak modyfikować usługi w systemie Windows 11: pełna kontrola, bezpieczeństwo i wydajność

Co więcej, w porównaniu z innymi rozwiązaniami, takimi jak Snap, proces pakowania i wdrażania może być, szczerze mówiąc, nieco bardziej zawiły . Oficjalne instrukcje są dość chaotyczne, a jeśli Twoim celem jest publikacja na Flathubie, jest jeszcze więcej kroków i wymagań do spełnienia.

Jak działa Flatpak na poziomie technicznym

Jak działa Flatpak

Aby w pełni zrozumieć, jak utworzyć pakiet Flatpak, bardzo pomocne jest dokładne zrozumienie jego architektury. Flatpak opiera się na dwóch podstawowych elementach: środowiskach wykonawczych i aplikacjachŚrodowisko wykonawcze to współdzielone środowisko wykonawcze, takie jak org.gnome.Platform/x86_64/3.22, która zapewnia wspólną bazę bibliotek i komponentów.

Aplikacja Flatpak deklaruje w swoich metadanych, jakiego środowiska wykonawczego potrzebuje do działania . W ten sposób wiele aplikacji może korzystać z tego samego środowiska wykonawczego, oszczędzając miejsce i zapewniając kompatybilność. Rezultatem jest coś w rodzaju: „aplikacja opiera się na stabilnej i dobrze znanej platformie, a wszystko, co nie jest na niej zawarte, jest zawarte w samej aplikacji”.

Aplikacje działają w odizolowanych kontenerach, które ograniczają dostęp do zasobów krytycznych . Izolacja ta jest zarządzana poprzez konfigurowalne uprawnienia: dostęp do sieci, katalogi systemu plików, urządzenia wejściowe, dźwięk (PulseAudio), serwer graficzny (X11/Wayland), magistrala D-Bus do komunikacji międzyprocesowej itp.

Kluczową ideą jest bardziej przewidywalne zarządzanie zależnościami . Zamiast polegać na wersjach bibliotek systemowych, które mogą się znacznie różnić w zależności od dystrybucji i wersji, programista wie z góry, które środowisko wykonawcze będzie dostępne i, jeśli potrzebne jest coś nowszego lub bardziej szczegółowego, dołącza to bezpośrednio do pakietu.

Dystrybucja odbywa się zazwyczaj za pośrednictwem repozytoriów, takich jak Flathub, które pełnią funkcję scentralizowanego repozytorium aplikacji Flatpak . Stamtąd użytkownicy mogą wyszukiwać, pobierać i instalować aplikacje za pomocą jednego polecenia lub za pośrednictwem graficznego magazynu. Możliwe jest również tworzenie niestandardowych repozytoriów, co jest bardzo przydatne w środowiskach korporacyjnych lub edukacyjnych, gdzie aplikacje są wdrażane w sposób kontrolowany.

Wymagania wstępne dotyczące tworzenia pakietu Flatpak

Zanim zaczniesz pakować, musisz zrozumieć, czego Flatpak wymaga do poprawnego działania. Istnieją trzy podstawowe wymagania: zainstalowanie Flatpaka, odpowiednie środowisko uruchomieniowe oraz zdefiniowanie struktury pakietu.

W praktycznie każdej nowoczesnej dystrybucji Linuksa można zainstalować Flatpak z poziomu menedżera pakietów danej dystrybucji . Na przykład w Arch Linux, jeśli zainstalujesz GNOME z grupami pakietów gnome i gnome-extra , Flatpak zostanie automatycznie zainstalowany jako pakiet zależny. W przeciwnym razie możesz zainstalować go jawnie za pomocą menedżera pakietów danej dystrybucji (pacman, apt, dnf, zypper itp.).

Drugi krok to skonfiguruj co najmniej jedno środowisko wykonawczeW przypadku większości aplikacji na komputery stacjonarne powszechne jest korzystanie z platform takich jak org.gnome.Platform lub te dostarczane przez KDE, zawsze w architekturze i wersji, której będziesz używać, na przykład x86_64/3.22.

Gdy masz już Flatpak i środowisko wykonawcze, czas pomyśleć o struktura pakietu i w pełni kwalifikowana nazwa aplikacjiFlatpak wykorzystuje konwencję typu com.distribuidor.App o org.test.HelloJest to podobne do identyfikatorów domeny odwrotnej. Ten identyfikator będzie używany we wszystkich poleceniach i manifeście.

Na koniec będziesz potrzebować narzędzi programistycznych odpowiadających Twojemu językowi lub technologii, ponieważ część procesu obejmuje kompilację lub przygotowanie plików binarnych, które następnie zostaną umieszczone w kontenerze Flatpak . Pakowanie małego skryptu powłoki nie jest tym samym , co pakowanie złożonej aplikacji w C++, Javie, Pythonie lub Electronie.

Podstawowa struktura opakowania Flatpak

Pakiet Flatpak to nie tylko pliki binarne. Zawiera kilka istotnych elementów, które opisują aplikację i umożliwiają jej integrację ze środowiskiem pulpitu . Typowe komponenty pakietu Flatpak to:

  • AppData (metadane aplikacji): Pliki informacyjne o aplikacji (zazwyczaj w formacie XML) zawierające opis, zrzuty ekranu, kategorię, link do oficjalnej strony internetowej itp. Są one niezbędne, aby sklepy z oprogramowaniem mogły prawidłowo wyświetlać aplikację.
  • Ikony w różnych rozmiarach: Obrazy dostosowane do różnych gęstości ekranów, w tym wyświetlaczy o wysokiej rozdzielczości. Są instalowane w standardowych ścieżkach rozpoznawanych przez środowisko graficzne.
  • Pliki .desktop: Skróty umożliwiające uruchomienie aplikacji z menu, programu uruchamiającego aplikacje lub stacji dokującej środowiska pulpitu.
  • Konfiguracja D-Bus i inne usługi: Definicje dotyczące komunikacji z magistralą komunikatów systemowych, a także integracja z PulseAudio w zakresie dźwięku i X11/Wayland w zakresie reprezentacji graficznej.
  • Pliki specyficzne dla aplikacji: Pliki wykonywalne, skrypty, dodatkowe biblioteki, zasoby graficzne itp. Krótko mówiąc, wszystko, co niezbędne do działania programu.
  Jak dostosować ikony folderów w środowisku KDE Plasma

Aby lepiej zrozumieć strukturę, wyobraź sobie, że tworzysz bardzo prosty przykład, program „Hello World” spakowany za pomocą Flatpak. Możesz zacząć od utworzenia takiej hierarchii katalogów :

mkdir hello
mkdir hello/files
mkdir hello/files/bin
mkdir hello/export

W folderze hello/files/bin Czy umieściłbyś plik wykonywalny lub skrypt że chcesz biegać i w hello Będziesz miał typowe metadane Flatpak, takie jak plik aplikacji z sekcją [Application] gdzie określono nazwę i kolejność startu.

Uproszczony przykład metadanych mógłby wyglądać następująco, gdzie zdefiniowano identyfikator, czas wykonania i główne polecenie, które ma zostać wykonane :

[Application]
name=org.test.Hello
runtime=org.gnome.Platform/x86_64/3.22
command=hello.sh

A plik hello.sh może być prosty skrypt powłoki z tą zawartością, która zostanie zainstalowana w files/bin:

#!/bin/sh
echo "Hello world, from a sandbox"

Przykład ten jest bardzo podstawowy, ale ilustruje ideę, że pakiet Flatpak zawiera z jednej strony pliki aplikacji, a z drugiej strony wszelkie informacje niezbędne do jej prawidłowej integracji i uruchomienia w określonym środowisku wykonawczym.

Ogólne kroki tworzenia pakietu Flatpak krok po kroku

Na podstawie powyższego możemy podsumować podstawowy proces pakowania aplikacji w Flatpak. Poniższe kroki są ważne zarówno dla testów lokalnych, jak i dla poważniejszych wydań (chociaż, jak zobaczymy, Flathub nakłada dodatkowe wymagania):

  1. Zainstaluj Flatpak na swojej dystrybucji Jeśli jeszcze go nie masz, użyj natywnego menedżera pakietów (apt, dnf, pacman itp.).
  2. Skonfiguruj odpowiednie środowisko wykonawczeNa przykład dodając Flathub jako repozytorium i pobierając środowisko uruchomieniowe wymagane dla Twojej aplikacji.
  3. Zdefiniuj strukturę pakietu i jego pełny identyfikator (tego typu com.tuempresa.TuApp), a także tworzenia folderów plików, metadanych, ikon, AppData itp.
  4. Zbuduj pakiet i wyeksportuj go do repozytorium lokalnie lub zdalnie, na przykład za pomocą polecenia takiego jak flatpak build-export repo helloGdzie repo jest folderem repozytorium i hello To jest katalog z kompilacją.
  5. Zainstaluj pakiet z tego repozytorium i przetestuj go. aby sprawdzić, czy wszystko działa zgodnie z oczekiwaniami w piaskownicy.

Polecenie flatpak build-export można łączyć z podpisami GPG aby zagwarantować autentyczność dewelopera i integralność pakietuJest to szczególnie interesujące w przypadku dystrybucji aplikacji w środowiskach, w których weryfikacja kryptograficzna ma duże znaczenie.

Należy pamiętać, że powyższe kroki opisują dość prosty przepływ pracy ukierunkowany na kompilacje lokalne . W przypadku Flathuba sytuacja nieco się komplikuje, ponieważ repozytorium nie akceptuje prekompilowanych pakietów; zamiast tego kompiluje pakiety Flatpak na własnych serwerach z ograniczonym dostępem do sieci.

Instaluj, uruchamiaj i zarządzaj aplikacjami Flatpak z poziomu terminala

Gdy masz już swój pakiet lub chcesz wypróbować inne, zarządzanie aplikacjami Flatpak z wiersza poleceń jest całkiem proste . Przyjrzyjmy się kilku typowym przykładom, które pomogą Ci zrozumieć, jak będzie wyglądał Twój własny pakiet po spakowaniu.

Wyobraź sobie, że utworzyłeś małe repozytorium o nazwie tutorial-repo zawierający przykładową aplikację org.test.Hello. Aby dodać to repozytorium i zainstalować aplikację tylko dla swojego użytkownikaMożesz użyć:

flatpak --user remote-add --no-gpg-verify tutorial-repo repo
flatpak --user install tutorial-repo org.test.Hello
flatpak run org.test.Hello

Parametr --user oznacza, że ​​instalacja jest wykonywana w katalogu osobistym użytkownika, bez konieczności posiadania uprawnień administratora i bez wpływu na pozostałe konta systemoweRozwiązanie to idealnie sprawdza się w środowiskach wielodostępnych, w których każdy użytkownik może sam zdecydować, z których aplikacji Flatpak chce korzystać.

Klasycznym przykładem jest instalacja gry takiej jak GNOME Chess tylko dla Twojego konta użytkownika. Polecenie może wyglądać tak (zakładając, że używasz Flathuba jako repozytorium):

flatpak install --user https://dl.flathub.org/repo/appstream/org.gnome.Chess.flatpakref

Możesz instalować aplikacje, bezpośrednio określając plik referencyjny .flatpakref, jak to jest w przypadku GIMP z Flathub, używając czegoś takiego:

flatpak install https://dl.flathub.org/repo/appstream/org.gimp.GIMP.flatpakref

Aby wszystko było aktualne, polecenie flatpak update Odpowiada za aktualizację zainstalowanych aplikacji.Można uruchamiać go okresowo lub nawet integrować ze skryptami administracyjnymi, tak jak się to robi w niektórych środowiskach edukacyjnych lub korporacyjnych, w których aplikacje są wdrażane w trybie systemowym dla wszystkich użytkowników.

Oprócz instalacji i aktualizacji, Flatpak umożliwia wyświetlanie, odinstalowywanie i czyszczenie aplikacji i środowisk wykonawczych, których już nie używasz. Polecenie cleanup jest szczególnie przydatne do usuwania osieroconych bibliotek i zależności, zwalniając miejsce na dysku po odinstalowaniu aplikacji Flatpak.

Flathub, repozytoria i wdrażanie aplikacji Flatpak

Flathub stał się głównym i najbardziej znanym repozytorium aplikacji Flatpak . To właśnie tam większość użytkowników szuka nowych programów, a wielu deweloperów publikuje zaktualizowane wersje swoich aplikacji desktopowych.

Flathub oferuje ogromną różnorodność oprogramowania, podzielonego na kategorie takie jak audio i wideo, programowanie, edukacja, gry, grafika, komunikacja, produktywność, nauka, narzędzia i wiele innych . Znajdziemy tam znane aplikacje, takie jak VLC, GIMP, LibreOffice, Audacity, Steam , Inkscape, Blender, Signal, Telegram, Calibre i wiele innych.

  Za mało pamięci, aby otworzyć tę witrynę w przeglądarce Google Chrome

Ze strony internetowej Flathub możesz Znajdź aplikację, kliknij przycisk INSTALUJ i pobierz referencję .flatpakref, który następnie jest przekazywany do polecenia flatpak installW niniejszym dokumencie znajdują się informacje niezbędne dla Flatpak, aby wiedzieć, z którego pilota pobrać aplikację, którego środowiska wykonawczego użyć itd.

Jeśli znajdujesz się w bardziej kontrolowanym środowisku, takim jak firma lub szkoła, możesz również tworzyć własne repozytoria i publikować w nich swoje aplikacje . Wiele instytucji edukacyjnych, na przykład, używa Ansible lub innych narzędzi automatyzacji do wdrażania aplikacji Flatpak w trybie systemowym, udostępniając je wszystkim użytkownikom komputera.

Instalacja w trybie systemowym zwykle wymaga uprawnień administratora, ale Ma tę zaletę, że aplikacje są udostępniane w sposób scentralizowany.Z kolei instalacja z --user Jest to idealne rozwiązanie zapewniające każdemu użytkownikowi elastyczność bez konieczności zmiany podstawowego zestawu oprogramowania maszyny.

Utwórz pakiet Flatpak, aby opublikować go na Flathubie

Oto jedna z najtrudniejszych części. Zbudowanie działającego Flatpaka na Twoim komputerze to dopiero połowa sukcesu . Jeśli chcesz opublikować go na Flathubie, proces ten wiąże się z dodatkowymi wymaganiami i ograniczeniami, o których powinieneś wiedzieć od samego początku, aby uniknąć frustracji.

Na początek, instrukcje na głównej stronie Flatpak koncentrują się na dość „otwartym” procesie kompilacji , w którym środowisko kompilacji może uzyskać dostęp do sieci, aby pobrać zależności, klonować repozytoria itd. Jednak Flathub kompiluje pakiety na własnych serwerach, a proces kompilacji nie ma tam dostępu do internetu. Oznacza to, że wszystko, czego potrzebujesz, musi być opisane w manifeście z dobrze zdefiniowanymi adresami URL źródła.

Innymi słowy, jeśli Twoja aplikacja jest zależna od wielu zewnętrznych bibliotek lub modułów, Należy jawnie dodać źródła dla każdej zależności w manifeście Flatpak.nawet jeśli już masz jeden requirements.txt W przypadku Pythona lub innego pliku zależności w Twojej technologii może to zmusić Cię do użycia (czasem nieoszlifowanych) skryptów pomocniczych do generowania tych sekcji, a Ty nadal będziesz musiał ręcznie sprawdzać takie rzeczy, jak zależności kompilacji.

W praktyce rozwiązanie wszystkich zależności i uruchomienie kompilacji bezsieciowej może zająć wiele godzin , szczególnie w złożonych aplikacjach lub tych z wieloma bibliotekami zewnętrznymi. W niektórych językach wysokiego poziomu, takich jak Python, znalezienie wszystkich poprawnych zależności kompilacji może być dość żmudne.

Kolejną ważną kwestią jest to, że nie można używać dowolnego środowiska uruchomieniowego na Flathubie . Można polegać wyłącznie na środowiskach uruchomieniowych hostowanych na samym Flathubie, co czasami zmusza do ręcznej kompilacji i dodawania większej liczby zależności niż byśmy chcieli. To zwielokrotnia ilość pracy związanej z pakowaniem i liczbę elementów, które trzeba utrzymywać w dłuższej perspektywie.

Oprócz manifestu i zależności, Flathub wymaga dość szczegółowego pliku metadanych , zawierającego takie informacje, jak obszerny opis, zrzuty ekranu, linki, licencje, kategorie, a w wielu przypadkach także notatki o wydaniach dla każdej aktualizacji. Wymaga to ciągłej konserwacji przy każdym wydaniu nowej wersji.

Proces wdrażania również nie jest trywialny. Aby opublikować dane w Flathubie, należy poprosić o konkretne repozytorium w organizacji Flathub na GitHubie , przejść proces weryfikacji i skonfigurować akcje lub przepływy pracy, które integrują się z infrastrukturą kompilacji Flathuba. Dokumentacja wspomina o akcjach GitHub, ale nie zawsze jasno wyjaśnia, jak te akcje pasują do oficjalnego repozytorium organizacji.

Z tych wszystkich powodów niektórzy deweloperzy, po wypróbowaniu Flatpaków, twierdzą, że tworzenie Flatpaków dla Flathubów może być frustrujące i bardzo czasochłonne , do tego stopnia, że ​​rozważają alternatywne formaty, takie jak Snap, gdy celem jest bardziej bezpośrednie i mniej bezproblemowe wdrożenie. Mimo to, zaleta dotarcia do bardzo szerokiej bazy użytkowników w wielu dystrybucjach sprawia, że ​​w wielu przypadkach wysiłek się opłaca.