O que é o Snapcraft?

16

Eu tenho tentado o núcleo instável do Ubuntu em um dispositivo Raspberry Pi 2 e ouvi dizer que posso usar o Snapcraft para fazer desenvolvimento nele. Agora ouvi dizer que os snaps estão disponíveis na área de trabalho e no servidor para o Ubuntu 16.04 e outras distribuições.

O que é o Snapcraft e como posso usá-lo?

David Planella
fonte

Respostas:

27

O Snapcraft é um conjunto de ferramentas agrupadas sob o snapcraftcomando para criar facilmente pacotes (criados) para várias distribuições Linux . Esses pacotes .snap geralmente contêm aplicativos independentes, fornecem isolamento seguro e são instaláveis ​​na Ubuntu Software Store ou manualmente através do snap install <snap-name>.snapcomando

Em poucas palavras, como desenvolvedor, você escreveria o código usando suas ferramentas regulares e deixaria o Snapcraft cuidar de montá-lo para distribuição. Snapcraft também se destaca no permitindo que os desenvolvedores porta seus aplicativos existentes para qualquer snap-habilitado plataforma Linux.

Snapcraft:

  • É inteligente : busca, constrói e monta diversas partes de software ( partes ) de fontes remotas em um pacote .snap final, que contém todas as dependências necessárias para funcionar
  • Precisa de uma receita : conta com um snapcraft.yamlarquivo que especifica as peças e plugins necessários para criar o pacote
  • É extensível com plugins. Embora seja fornecido com um conjunto dos plug-ins de sistema de compilação mais comuns para atender a uma ampla variedade de compilações de aplicativos, ele pode ser facilmente estendido com novos .

O passeio de Snapcraft de 3 minutos

Instale o Snapcraft no Ubuntu

Você precisará do Ubuntu 16.04 LTS para usar o Snapcraft. Abra um terminal com Ctrl+ Alt+ te simplesmente instale o Snapcraft com este comando:

sudo apt install snapcraft
sudo apt install build-essential  # Optional, but useful for different builds

Se você estiver usando outra distribuição, consulte as instruções de instalação alternativas>

Test-drive Snapcraft

O exemplo a seguir cria um pacote que contém um serviço que permite colar e compartilhar. Depois de concluído, você pode instalá-lo manualmente no seu dispositivo, para fins de teste ou carregá-lo na loja para outros usuários.

Primeiro, abrimos um terminal e baixamos o exemplo do repositório de exemplos:

sudo apt install git
git clone https://github.com/ubuntu-core/snapcraft.git
cd snapcraft/demos/gopaste

Observe o snapcraft.yamlarquivo nesse diretório, que especifica um serviço e as peças necessárias para montar o .snap final. Opcionalmente, você pode examiná-lo com um editor de texto.

Agora execute o snapcraftcomando no terminal. Isso fará com que todos os subcomandos do snapcraft sejam executados em sequência para criar as peças e colocar os resultados no pacote .snap final. Durante o desenvolvimento, você normalmente executaria as etapas separadamente até ter certeza de que toda a construção e montagem funcionam.

$ snapcraft 
Pulling gopaste 
env GOPATH=/tmp/snapcraft/examples/gopaste/parts/gopaste/build go get -t -d github.com/wisnij/gopaste/gopasted
Building gopaste 
env GOPATH=/tmp/snapcraft/examples/gopaste/parts/gopaste/build go build github.com/wisnij/gopaste/gopasted
env GOPATH=/tmp/snapcraft/examples/gopaste/parts/gopaste/build go install github.com/wisnij/gopaste/gopasted
env GOPATH=/tmp/snapcraft/examples/gopaste/parts/gopaste/build cp -a /tmp/snapcraft/examples/gopaste/parts/gopaste/build/bin /tmp/snapcraft/examples/gopaste/parts/gopaste/install
Staging gopaste 
Snapping gopaste 
Generated 'gopaste_1.0_amd64.snap' snap

Na saída do comando, você pode ver as etapas que o snapcraft executa para você:

  1. Pull : extrai o código da parte necessária do gopaste de um repositório remoto do Github
  2. Build : cria gopaste localmente
  3. Estágio : após a compilação, as partes são colocadas em uma única árvore de diretórios, a "área de preparação"
  4. Snap : o pacote .snap final é criado a partir das peças montadas na área de preparação

Notas:

  • Você encontrará o arquivo snap final como gopaste_1.0_amd64.snap(observe que, no meu caso, eu o construí no meu desktop amd64, por exemplo, os pacotes Raspberry Pi 2 teriam o _armhfsufixo da arquitetura).
  • Você também pode executar cada comando individualmente: snapcraft pull, snapcraft build, snapcraft stageousnapcraft snap
  • Use snapcraft -hpara uma rápida visão geral de todos os comandos disponíveis.

E é isso para dar uma rápida olhada no que a Snapcraft pode fazer! Saiba mais sobre o Snapcraft>

David Planella
fonte
9
Agradeço o comentário, mas, embora não seja um dos desenvolvedores do snapcraft, também não sei como explicar o que é uma ferramenta para criar snaps do Ubuntu e como usá-lo, em um site do Ubuntu, como spam.
David Planella
A redação da lista de recursos provocou isso em mim. E também"And that's it for a quick glimpse of what Snapcraft can do!"
Ismael Miguel
11
Eu concordo com David aqui.
quer
11
A parte bzr deve ser substituída por comandos git equivalentes, já que o código está agora no Github.
Lapisdecor
11
Além disso, para fazer isso, você precisa instalar o git e o gcc se estiver usando o git e não o bzr.
Lapisdecor