Podoba mi się pomysł snapu i grałem z nim na maszynie Wirtualnej Ubuntu.
Omówienie Snapcraft
Snapcraft to narzędzie do kompilacji i pakowania, które pomaga w szybkim pakowaniu oprogramowania. Ułatwia to włączanie komponentów z różnych źródeł i tworzenie technologii lub rozwiązań. Kluczowe idee
Pakiet .snap dla systemu Ubuntu Core zawiera wszystkie jego zależności. Ma to kilka zalet w porównaniu z tradycyjną obsługą zależności opartych na deb lub rpm, przy czym najważniejsze jest to, że deweloper zawsze może mieć pewność, że nie ma żadnych regresji wywołanych przez zmiany w systemie pod ich aplikacją.
Snapcraft ułatwia wiązanie tych zależności, umożliwiając określenie ich jako „części” w pliku snapcraft.yaml. Żwawy
Snappy Ubuntu Core to nowa wersja Ubuntu z aktualizacjami transakcyjnymi - minimalny obraz serwera z tymi samymi bibliotekami, co dzisiejsze Ubuntu, ale aplikacje są dostarczane przez prostszy mechanizm.
Aplikacje Snappy i sam Ubuntu Core można uaktualnić atomowo i w razie potrzeby wycofać. Aplikacje są również ściśle ograniczone i piaskownicowane w celu ochrony danych i systemu.
Na jakich technologiach działa Snap? Jak wygląda architektura i zestawy narzędzi? Czy snap zależy od funkcji jądra Linux?
Pytam, bo zastanawiam się, czy w przyszłości będę mógł używać tych samych pakietów Snap także na MacOS?
Wyjaśnienie, po pierwszym komentarzu:
Wiem, że macOS i Ubuntu nie są kompatybilne binarnie. Konieczna jest rekompilacja. Prawie każde oprogramowanie Open Source jest już dostępne dla systemu macOS z Homebrew . Deweloper może opracować na macOS i wdrożyć na Ubuntu, kiedy snap będzie (w przyszłości) dostępny dla macOS.
źródło
Odpowiedzi:
Tak, dzięki stabilności interfejsu systemowego Linux syscall jest to możliwe.
Jednym z wielkich zobowiązań Linusa Torvaldsa wobec użytkowników Linuksa jest to, że zestaw interfejsów oferowanych przez jądro jest stabilny. Wiele osób nie docenia tej wartości ani tego, jak trudne jest jako lider otwartego projektu, aby osiągnąć to zobowiązanie. Zastanówmy się na przykład, jak nieprzewidywalne są zmiany w interfejsach API GNOME! Kiedy słyszysz, że Linus zaczyna intensywnie pracować na liście mailingowej, prawie zawsze dzieje się tak, ponieważ niektórzy programiści jądra postanowili zmienić taki interfejs „ponieważ mieli lepszy pomysł”. Linus mówi, że możesz szalenie wprowadzać innowacje w jądrze, ale nie psuj aplikacji „przestrzeni użytkownika”, które zależą od istniejących wywołań systemowych.
W wyniku tej stabilności inne jądra mogą oferować te same wywołania systemowe, umożliwiając aplikacjom zbudowanym na Linuksie działanie na tych innych jądrach.
Jednym z przykładów jest projekt Joyent Triton, który oferuje kompatybilne z Linuksem syscalls w kontenerach na SmartOS (potomek IllumOS, potomek Solaris).
Bardziej znanym przykładem jest nowy podsystem Linux w systemie Windows .
Oczywiście, ile jest oferowanych połączeń systemowych i jak są one kompatybilne z błędami, to prawdziwe pytanie. Przynajmniej na razie nie ma innego środowiska, w którym istnieją wszystkie niezbędne wywołania systemowe, ponieważ te, które używają przystawek, są stosunkowo nowe i głębokie w sposobie myślenia jądra o zarządzanych przez niego elementach.
Ale z pewnością nadejdą z czasem i myślę, że dzięki temu zatrzaski będą użyteczne w szerokim zakresie kontekstów.
Co jest bardzo fajne, łatki mile widziane :)
źródło
Chociaż nie mogę znaleźć żadnych informacji o systemie macOS, ten OMG! Artykuł Ubuntu zawiera interesujący cytat Marka Shuttlewortha:
Jeśli „możliwe” jest uruchomienie go w systemie Windows, powiedziałbym to samo w przypadku systemu macOS, z tym wyjątkiem, że Microsoft wydaje się współpracować z Canonical, czego nie słyszałem o Apple.
Dokumentacja na temat zasad bezpieczeństwa Snap i piaskownicowania oraz wpis Arch Wiki w snapd są pouczające:
Z Arch Wiki:
Z polisy:
Chociaż AppArmor i seccomp są tylko Linuksem, wygląda na to, że ograniczenie może być opcjonalne, więc możemy to zignorować. Potem jest użycie devpts, cgroups i montowania przestrzeni nazw. Jeśli jest jakieś blokowanie, myślę, że byłoby dla nich. Nie znam wystarczająco BSD, aby powiedzieć, jakie są ich odpowiedniki.
Sama
snapd
aplikacja jest napisana w Go, co powinno uczynić ją rozsądną dla wielu platform. Rzeczywiście, niektóre pliki mają bardzo interesujące cele kompilacji :osutil/group_other.go
:osutil/group_linux.go
:Wygląda na to, że ktoś jest tym zainteresowany.
źródło