Snap StoreEdit
Snap Store pozwala programistom publikować swoje aplikacje bezpośrednio użytkownikom. Dzięki tradycyjnym podejściom do zarządzania pakietami Linuksa, takim jak APT lub YUM, aplikacje są pakowane i dystrybuowane jako część systemu operacyjnego. Powoduje to opóźnienie między opracowaniem aplikacji a jej wdrożeniem dla użytkowników końcowych. Natomiast programiści aplikacji mogą publikować swoje aplikacje w Snap Store i przesyłać je bezpośrednio do użytkowników bez interwencji opiekunów dystrybucji.
wszystkie aplikacje przesłane do Snap Store przechodzą automatyczne testy, w tym skanowanie złośliwego oprogramowania. Jednak Aplikacje Snap nie otrzymują takiego samego poziomu weryfikacji jak oprogramowanie w zwykłych archiwach Ubuntu. W jednym przypadku w maju 2018 r. stwierdzono, że dwie aplikacje tego samego programisty zawierają Górnik kryptowalut, który działał w tle podczas wykonywania aplikacji. Kiedy ten problem został znaleziony, Canonical usunął aplikacje ze sklepu Snap Store i przeniósł własność snapów na zaufaną stronę trzecią, która ponownie opublikowała Snapy bez obecności górnika. Chociaż piaskownica Snap zmniejsza wpływ złośliwej aplikacji, Canonical zaleca użytkownikom instalowanie tylko snapów od wydawców zaufanych przez użytkownika.
ponieważ pakiety w Snap Store są utrzymywane przez samych programistów, opiekunowie dystrybucji nie mogą zapewnić, że pakiety spełniają standardy jakości i są aktualizowane na czas. W jednym przypadku firma Microsoft pozostawiła nieaktualną wersję Skype ’ a w sklepie Snapcraft na ponad rok.
chociaż Snap Store firmy Canonical jest obecnie jedynym istniejącym sklepem dla snapów, Sam Snap może być używany bez sklepu. Pakiety Snap można uzyskać z dowolnego źródła, w tym ze strony internetowej programisty. Pracownik Red Hat Adam Williamson i kierownik projektu Linux Mint Clement Lefebre skrytykowali Canonical za to, że niektóre części po stronie serwera Snap Store są zamknięte-źródło. Clement stwierdza, że tworzy to konflikt interesów, który szkodzi neutralności Snap, biorąc pod uwagę, że Canonical rozwija Ubuntu.
uniwersalne Pakiety Linuksaedit
Snapy są samodzielnymi pakietami, które działają w wielu dystrybucjach Linuksa. Jest to w przeciwieństwie do tradycyjnych metod zarządzania pakietami Linuksa, które wymagają specjalnie dostosowanych pakietów dla każdej dystrybucji Linuksa.
format pliku snap jest pojedynczym skompresowanym systemem plików wykorzystującym Format SquashFS z rozszerzeniem.snap
. Ten system plików zawiera aplikację, biblioteki, od których zależy, oraz deklaratywne metadane. Te metadane są interpretowane przez snapd, aby skonfigurować odpowiednio ukształtowaną bezpieczną piaskownicę dla tej aplikacji. Po instalacji snap jest montowany przez system operacyjny hosta i dekompresowany w locie, gdy używane są pliki. Chociaż ma to tę zaletę, że Snapy zużywają mniej miejsca na dysku, oznacza to również, że niektóre duże aplikacje zaczynają się wolniej.
znacząca różnica między Snap a innymi uniwersalnymi formatami opakowań Linuksa, takimi jak Flatpak, polega na tym, że Snap obsługuje dowolną klasę aplikacji Linuksowych, takich jak aplikacje desktopowe, narzędzia serwerowe, aplikacje IoT, a nawet usługi systemowe, takie jak Sterownik drukarki. Aby to zapewnić, Snap opiera się na systemd w przypadku takich funkcji, jak uruchamianie usług systemowych aktywowanych gniazdem w mgnieniu oka. Powoduje to, że Snap działa tylko na dystrybucjach, które używają tego systemu init.
konfigurowalne Sandboxedit
aplikacje w mgnieniu oka uruchamiane w kontenerze z ograniczonym dostępem do systemu hosta. Za pomocą interfejsów, użytkownicy mogą dać aplikacji pośredniczy dostęp do dodatkowych funkcji hosta, takich jak nagrywanie dźwięku, dostęp do urządzeń USB i nagrywanie wideo. Interfejsy te pośredniczą w zwykłych interfejsach API Linuksa, dzięki czemu aplikacje mogą działać w piaskownicy bez konieczności przepisywania. Aplikacje desktopowe mogą również korzystać z portali desktopowych XDG, standardowego interfejsu API pierwotnie stworzonego przez projekt Flatpak, aby zapewnić aplikacjom desktopowym dostęp do zasobów hosta. Portale te często zapewniają lepsze wrażenia użytkownika w porównaniu z natywnymi interfejsami API Linuksa, ponieważ pytają użytkownika o pozwolenie na korzystanie z zasobów, takich jak kamera internetowa w czasie, gdy aplikacja ich używa. Minusem jest to, że aplikacje i zestawy narzędzi muszą zostać przepisane, aby korzystać z tych nowszych interfejsów API.
Snap sandbox obsługuje również udostępnianie danych i gniazd Unixowych między snapami. Jest to często używane do współdzielenia wspólnych bibliotek i frameworków aplikacji między snapami, aby zmniejszyć rozmiar snapów poprzez unikanie ich powielania.
Snap sandbox w dużej mierze opiera się na module bezpieczeństwa AppArmor Linux z jądra Linuksa. Ponieważ tylko jeden” główny ” Linux Security Module (LSM) może być aktywny w tym samym czasie, Snap sandbox jest znacznie mniej bezpieczny, gdy włączony jest inny główny LSM. W rezultacie, na dystrybucjach takich jak Fedora, które domyślnie włączają SELinux, piaskownica Snap jest mocno zdegradowana. Chociaż Canonical współpracuje z wieloma innymi programistami i firmami, aby umożliwić jednoczesne działanie wielu LSM, To rozwiązanie to jest jeszcze bardzo odległe.
piaskownica Snap zapobiega dostępowi aplikacji do motywów systemu operacyjnego hosta, aby zapobiec problemom ze zgodnością. Aby Snapy mogły korzystać z motywu, należy go również zapakować w osobny Snap. Wiele popularnych motywów jest pakowanych przez programistów Snap, ale niektóre motywy nie są jeszcze obsługiwane i uncommon themes muszą być instalowane ręcznie. Jeśli motyw nie jest dostępny jako pakiet Snap, użytkownicy muszą uciekać się do wyboru najlepszego dopasowanego motywu. Trwają prace, aby ułatwić osobom trzecim pakowanie motywów w mgnieniu oka i automatyczne instalowanie nietypowych motywów systemowych.
automatyczne i atomic aktualizacjeedit
wiele razy dziennie snapd sprawdza dostępność aktualizacji wszystkich snapów i instaluje je w tle za pomocą operacji atomic. Aktualizacje można cofnąć i użyć kodowania delta, aby zmniejszyć rozmiar pobierania.
wydawcy mogą wydawać i aktualizować wiele wersji swojego oprogramowania równolegle za pomocą kanałów. Każdy kanał ma określoną ścieżkę i ryzyko, które wskazują na wersję i stabilność oprogramowania wydanego na tym kanale. Podczas instalowania aplikacji Snap domyślnie używa kanałulatest/stable
, który automatycznie aktualizuje się do nowych głównych wersji oprogramowania, gdy staną się dostępne. Wydawcy mogą tworzyć dodatkowe kanały, aby dać użytkownikom możliwość trzymania się konkretnych głównych wersji ich oprogramowania. Na przykład kanał 2.0/stable
pozwalałby użytkownikom na trzymanie się wersji 2.0 oprogramowania i uzyskiwanie tylko drobnych aktualizacji bez ryzyka wstecznie niekompatybilnych zmian. Gdy Wydawca wyda nową główną wersję na nowym kanale, użytkownicy mogą ręcznie zaktualizować ją do następnej wersji, gdy tylko zechcą.
chociaż nie można wyłączyć automatycznych aktualizacji, istnieje wiele sposobów konfigurowania aktualizacji do konkretnych potrzeb. Użytkownik może wybrać, aby pozostać na określonej głównej wersji oprogramowania, określając kanał, mogą skonfigurować interwał aktualizacji, aby mieć czas na ręczne sprawdzanie aktualizacji, i mogą trzymać aktualizacje do 60 dni. Ponadto aktualizacje są również automatycznie wyłączane przy połączeniach z pomiarem. Nawet przy tych kontrolach wielu użytkowników wyraziło swoje skargi na brak opcji całkowitego wyłączenia automatycznych aktualizacji.
SnapcraftEdit
Canonical Ltd.
29 October 2015; 5 years ago
https://github.com/snapcore/snapcraft
Python
Linux, MacOS, Microsoft Windows
GPLv3
snapcraft.io
Snapcraft jest narzędziem dla programistów do pakowania swoich programów w formacie Snap. Działa na dowolnej dystrybucji Linuksa obsługiwanej przez Snap, macOS i Microsoft Windows. Snapcraft buduje pakiety na maszynie Wirtualnej za pomocą Multipass, aby zapewnić, że Wynik kompilacji jest taki sam, niezależnie od tego, na której dystrybucji lub systemie operacyjnym jest zbudowany. Snapcraft obsługuje wiele narzędzi do budowania i języków programowania, takich jak Go, Java, JavaScript, Python, C/C++ i Rust. Umożliwia również importowanie metadanych aplikacji z wielu źródeł, takich jak AppStream, Git, skrypty powłoki i setup.py
plików.