Eu amo a idéia por trás do snap e brinquei com ele em uma VM do Ubuntu.
Visão geral do Snapcraft
O Snapcraft é uma ferramenta de compilação e empacotamento que ajuda você a empacotar seu software rapidamente. Isso facilita a incorporação de componentes de diferentes fontes e a criação de tecnologias ou soluções. Conceitos chave
Um pacote .snap para o sistema Ubuntu Core contém todas as suas dependências. Isso tem algumas vantagens sobre o tratamento tradicional de dependências baseado em deb ou rpm, sendo o mais importante que um desenvolvedor sempre pode ter certeza de que não há regressões acionadas por alterações no sistema sob o aplicativo.
O Snapcraft facilita o agrupamento dessas dependências, permitindo que você as especifique como "partes" no arquivo snapcraft.yaml. Snappy
O Snappy Ubuntu Core é uma nova versão do Ubuntu com atualizações transacionais - uma imagem mínima do servidor com as mesmas bibliotecas do Ubuntu atual, mas os aplicativos são fornecidos por um mecanismo mais simples.
Aplicativos rápidos e o próprio Ubuntu Core podem ser atualizados atomicamente e revertidos, se necessário. Os aplicativos também são estritamente confinados e protegidos por sandbox para proteger seus dados e sistema.
Em que tecnologias é baseada em snap? Como é a arquitetura e os kits de ferramentas? O snap depende dos recursos do kernel do Linux?
Eu pergunto, porque estou pensando se, no futuro, poderei usar os mesmos pacotes de snap também no macOS?
Esclarecimento, após o primeiro comentário:
Eu sei que o macOS e o Ubuntu não são compatíveis com binários. Uma recompilação é necessária. Já existe quase todo o código aberto disponível para o macOS com o Homebrew . O desenvolvedor pode desenvolver no macOS e implantar no Ubuntu quando o snap estiver (no futuro) disponível para o macOS.
fonte
Respostas:
Sim, graças à estabilidade da interface syscall do Linux, isso é possível.
Um dos grandes compromissos de Linus Torvalds com os usuários do Linux é que o conjunto de interfaces oferecidas pelo kernel é estável. Muitas pessoas não apreciam o valor disso ou o quão desafiador é como líder de um projeto aberto alcançar esse compromisso. Considere, por exemplo, como são imprevisíveis as mudanças nas APIs do GNOME! Quando você ouve sobre o Linus ficar intenso em uma lista de discussão, é quase sempre porque algum colaborador do kernel decidiu mudar essa interface 'porque eles tinham uma ideia melhor'. Linus diz que você pode inovar loucamente DENTRO do kernel, mas por favor, não quebre os aplicativos 'espaço de usuário' que dependem dos chamados existentes.
Como conseqüência dessa estabilidade, é possível que outros kernels ofereçam os mesmos syscalls, permitindo que os aplicativos criados no Linux sejam executados nesses outros kernels.
Um exemplo disso é o projeto Joyent Triton, que oferece syscalls compatíveis com Linux em contêineres no SmartOS (um descendente do IllumOS, um descendente do Solaris).
Um exemplo mais conhecido é o novo subsistema Linux no Windows .
Obviamente, quantos dos syscalls são oferecidos e quão compatíveis são de bug por bug, é a verdadeira questão. Pelo menos por enquanto, não há outro ambiente em que todos os syscalls necessários estejam em vigor, porque os snaps usados são relativamente novos e aprofundados na maneira como o kernel pensa nas coisas que gerencia.
Mas eles certamente chegarão com o tempo, e acho que os snaps serão assim utilizáveis em uma ampla gama de contextos.
O que é muito legal, os patches são bem-vindos :)
fonte
Embora não encontre nenhuma informação sobre o macOS, este OMG! O artigo Ubuntu tem uma citação interessante de Mark Shuttleworth:
Se é "plausível" fazê-lo funcionar no Windows, eu diria o mesmo para o macOS, exceto que a Microsoft parece estar cooperando com a Canonical, o que não é algo que eu ouvi sobre a Apple.
A documentação sobre política de segurança Snap e sandboxing e a entrada do Arch Wiki no snapd são informativas:
No Arch Wiki:
Da política:
Embora o AppArmor e o seccomp sejam apenas Linux, parece que o confinamento pode ser opcional, portanto podemos ignorá-lo. Depois, há o uso de devpts, cgroups e montagem de namespaces. Se houver algum bloqueio, acho que seria para eles. Não estou familiarizado o suficiente com os BSDs para dizer quais são os equivalentes.
O
snapd
aplicativo em si é escrito em Go, o que deve torná-lo razoavelmente entre plataformas. De fato, alguns arquivos têm alvos de construção muito interessantes :osutil/group_other.go
:osutil/group_linux.go
:Parece que alguém tem interesse nisso.
fonte