Dlaczego istnieją pakiety Snap - czy naprawdę istnieje taka potrzeba?

11

Założenia

Szczerze mówiąc, niewiele wiem o pakietach Snap - ale nie ma to znaczenia dla tego pytania - patrz poniżej. Zakładam, że system różni się znacznie od istniejącego.

Czy zmiana ma sens?

Czy istnieje rzeczywista potrzeba, wystarczająco silna? To znaczy - czy istnieje nowy przypadek użycia, który jest wystarczająco ważny, aby opracować nowy format - i powiązana infrastruktura?

Czy nie była możliwa zmiana obecnej metody na nowe przypadki użycia?

A może brakuje mi sensu?

Możliwe, że to, co widzę, to głównie marketing - nowe nazwy i prezentacja dla minimalnej zmiany technicznej, aby mieć szansę, że jakikolwiek organizm przyjmie ją jako „nową i lepszą” i może być faktycznie używana. Może się również zdarzyć, że nowe pakiety są tak ściśle oparte na istniejącym formacie, że jest to głównie zmiana prezentacji dla użytkownika. To oczywiście może być dobre rozwiązanie. W takim przypadku to pytanie nie miałoby większego znaczenia.

Mam nadzieję, że nadal będzie to wystarczająco przydatne, aby odpowiedzieć na aspekty uboczne. Daj mi znać, jeśli pytanie nie jest pomocne lub mylące dla nowych użytkowników, chętnie je usunę.

Dlaczego więc istnieją?


tło

Moja pierwsza reakcja brzmiała: „To nie ma sensu!”

Jest to podobne do sytuacji, w której na stronie fizyki ktoś zapytał niezadowolony, dlaczego w odpowiedziach nikt nie dyskutuje o jego genialnych nowych pomysłach. Wyglądało to bardzo podobnie do pomysłów typu crackpot; Tak daleko od faktycznej wiedzy fizycznej, że ciężko było znaleźć punkt, aby zacząć. Napisałem odpowiedź, która nie poruszyła jego pomysłów jednym słowem, ale wyjaśniła, dlaczego po prostu nie dyskutuje się o zakładaniu pomysłów crackpot - nie pierwszy przypadek. Wydaje mi się, że odpowiedź rzeczywiście trafiła w sedno.

Jeśli moje założenia były słuszne, ten przypadek jest podobny.

Ale może nie - zobaczmy.

Volker Siegel
źródło
Głosowanie jest bliskie, mówiąc „oparte głównie na opiniach” - czy to oznacza, że ​​odpowiedzi powinny być oparte na opiniach? To byłaby odpowiedź sama w sobie, ponieważ oznacza to, że nie ma konsensusu co do potrzeby zmiany. Byłyby więc argumenty za i przeciw; To by znaczyło, że moje pytanie jest w gruncie rzeczy bardzo przydatne i bardziej przydatne niż się spodziewałem!
Volker Siegel,
2
Głosowałem za ponownym otwarciem tego pytania. Naprawdę pyta, dlaczego wprowadzono snapy, kiedy menedżery pakietów już istniały, a Ubuntu (i inne systemy operacyjne) już je miały. Więc masz rację: jeśli tak naprawdę było to pytanie oparte głównie na opiniach, oznaczałoby to, że nie można udzielić odpowiedzi na to pytanie w oparciu o fakty i doświadczenie. Jednak, jak widzieliście na podstawie doskonałej odpowiedzi muru , tak nie jest. Kiedy (lub nawet jeśli) należy użyć snapów, wciąż jest coś, o czym ludzie mogą przede wszystkim rozmawiać na podstawie opinii, ale nie o to chodziło.
Eliah Kagan

Odpowiedzi:

17

Tak, istnieje prawdziwa potrzeba.

Od samego początku istniało zapotrzebowanie na coś takiego.

Wyjaśnijmy to:

Zarządzanie zależnościami jest trudne .

Jest powód, dla którego nazywa się to piekłem zależności . Systemy pakowania, takie jak RPM i Debian, zostały stworzone z myślą o uniknięciu piekła zależności. Jednak ktoś musi zapłacić koszt:

  1. W systemie Windows, w którym programy łączą swoje zależności, użytkownik musi dbać o aktualizacje (i wszelkie problemy z bezpieczeństwem wynikające z ich braku). Jeśli deweloper chce mieć wersję X czegoś dla mojej aplikacji, proste: dostarczam to z moją aplikacją. Jak teraz obsługiwać aktualizacje?
  2. W większości dystrybucji Linuksa (po Debianie lub Red Hacie), w których program może zależeć od oprogramowania z repozytorium, program z repozytorium musi zależeć od oprogramowania z repozytorium. Jeśli chcę wersję X czegoś dla mojej aplikacji, a dystrybucja zapewnia X, proste: zależę od tego. A jeśli nie dystrybucja? Następnie: ???
    • Dodanie wielu wersji do dystrybucji zwiększa obciążenie opiekuna
    • Utrata możliwości korzystania z wybranej wersji zależności zwiększa obciążenie programisty
    • Utrata możliwości korzystania z wybranej wersji aplikacji frustruje użytkownika

Obie metody powodują znaczną utratę wolności.

I tu właśnie pojawiają się przystawki: pozwalają programistom na dołączenie wersji X, a system pakowania zarządza aktualizacjami. Kto ponosi koszty? Użytkownik:

  • wymagając więcej miejsca.
  • narażając ich na ryzyko z powodu nieostrożnego twórcy, który nie odbudowuje swoich snapów po załataniu zależności.

Jakie świadczenia otrzymam w zamian?

  • Oprócz bezpieczeństwa za pośrednictwem aktualizacji (które, szczerze mówiąc, mało osób się przejmuje), ja użytkownik nie muszę się martwić o zależności za pomocą snapów. Słowo najczęściej traci znaczenie.
  • Oprócz aktualizacji zabezpieczeń twórca oprogramowania nie musi się martwić, że użytkownicy zainstalują prawidłowe zależności.
muru
źródło
3
Tak, myślę, że piekło zależności opisuje to całkiem dobrze.
Volker Siegel,
Pozwól mi stworzyć głos przeciwny :), Dlaczego po prostu nie używają /opt?
user.dz
@Sneetsher myśli o tym w ten sposób: co uniemożliwia jednej aplikacji w / opt pisanie nad inną aplikacją w / opt? Co gorsza, w jaki sposób można uniemożliwić jednej aplikacji odczytanie kluczy prywatnych innej aplikacji?
Evan
@Evan, studnia AppArmorjuż się skończyła, żeby to opisać . ale sposób ochrony może być inny. W każdym razie tematem jest wejście na pokład.
user.dz
muru, dziękuję za napisanie tego wszystkiego. Nawiasem mówiąc, była to pierwsza odpowiedź w Google na temat przyczyny. Ale jestem ciekawa. Widzę, że mój system używa snapów, powiedzmy Chromium. A teraz chciałbym zainstalować Skype. Zwykle chciałbym, sudo apt-get install skypeale potem widzę, że jest dostępny jako przystawka. Ale kiedy zainstalowałem Chromium, nie zrobiłem nic specjalnego, aby użyć snap. Ale tak jest. Teraz rozumiem, DLACZEGO zatrzaski istnieją i cieszę się, że tak. Jestem teraz ciekawy, czy muszę się martwić sudo snap install skype?
SDsolar,
3

Jedną szczególną cechą snapów, która może być przydatna, jest możliwość wyboru kanału dla programistów, którzy zapewniają więcej niż jeden kanał, taki jak wydanie , kandydat , master itp.

Na przykład kliknięcie przycisku Kanałnextcloud spowoduje wyświetlenie okna dialogowego na zrzucie ekranu poniżej.

Innymi mocnymi zaletami są izolacja, niezmienność i piaskownica, które są kontrolowane przez kontekst polityki bezpieczeństwa , który pozwala definiować uprawnienia dla aplikacji, zwane również „wtyczkami”, np. Dla:

  • lokalizacje do odczytu / zapisu
  • dostęp do pamięci wymiennej
  • kraje, w których przystawka znajduje się na białej / czarnej liście
  • dostęp do sieci
  • aparat fotograficzny, drukarka, joystick, lokalizacja GPS
  • Ustawienia systemowe
  • ... pełna lista interfejsów Snap

Podejście to do pewnego stopnia naśladuje pakiety aplikacji MacOS i piaskownicę aplikacji Androida z uprawnieniami i dostawcami / odbiorcami treści.

Pakiety Snap Ubuntu wybierz kanał

Teraz wyobraź sobie, że musisz uruchomić kilkanaście aplikacji, każda z własną wersją niektórych bibliotek, własną wersją środowiska wykonawczego Python / Ruby / NodeJS i nie chcesz wpaść w piekło zależności, zepsuć lub zanieczyścić biblioteki systemowe, twoje systemowe moduły Python / Node / Perl / Ruby itp.

ccpizza
źródło