# Snapcraft
## Introdução - Snapcraft

O snapcraft é um instalador de pacotes snappy. Primeiramente vamos explicar sobre o que é um pacote snappy, depois iremos voltar ao snapcraft. O Snappy é um tipo de pacote como o .deb e .dpkg. O Snappy é novo dentre os tipos de pacotes já existentes, ele foi lançado em versão beta no Ubuntu 16.04 LTS. A ideia da equipe de desenvolvedores do Ubuntu é que ele seja o substituto do tipo .deb usado atualmente nas distribuições Ubuntu. O Snappy é inovador, ele é um pacote auto contido, no qual tem todas as suas dependências no mesmo pacote, ou seja, não é necessária a instalação de nenhum outro pacote dependente, pois todos as dependências ou bibliotecas já estarão nele mesmo. Agora podemos explicar um pouco sobre o snapcraft, ele é o instalador dos pacotes snappy, ou seja, ele é o responsável em comprimir e descomprimir os pacotes, bem como a instalação no sistema operacional. Apesar do snapcraft ser uma iniciativa da equipe de desenvolvimento do Ubuntu a ideia é que ele seja um tipo de instalador universal. Quando nós estamos no referindo a um instalador universal quer dizer que ele instala pacotes em qualquer sistema operacional. De fato é uma ideia inovadora, você ter um pacote snappy, auto contido, que não precisa de outras dependências e além disso você poder instalar em qualquer sistema operacional de kernel Linux.

## Vantagens

* Instalações limpas, você terá tudo que você precisa e nada além do que você precisa.
* Instalações auto contidas.
* Instalações com dependência de versões corretas.
* Facilidade na instalação de pacotes, você instala com um comando.
* Instalar os mesmos pacotes nas mesmas versões com o mesmo arquivo snappy em sistemas operacionais diferentes.
* Fácil acoplamento de interfaces, os pacotes snaapy permitem a criação de interface que se comunicam com outros pacotes snaapy.

## Desvantagens

* O pacote restringe as versões das dependências, não evoluindo com elas.
* Dependente da loja de aplicativos para poder instalar, mesmo podendo criar uma "store" é necessário que o pacote tenha uma loja.
* Acoplamento de dependências.
* Tecnologia em fase de testes (beta).
* Apesar da ideia inicial seja que ele funcione em qualquer distribuição que tenha o kernel linux, ele não foi lançado nas lojas de todas distribuições Linux.

## Instalação

O Snapcraft pode ser instalado nas seguintes distribuições:
* Arch Linux
* Debian
* Fedora
* Gentoo
* OpenEmbedded/Yocto
* openSUSE
* OpenWrt
* Ubuntu
Vamos focar na instação do sistema Ubuntu:
Abra o terminal e digite os seguintes comandos:
$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt install snapd
Após a sequência de comandos a instalação do Snapcraft estará concluída.

## Usando o Snapcraft

Após se registrar no Ubuntu SSO account
Entre no terminal novamente digite o comando com o e-mail no qual você se registrou, digite a senha e o segundo fator.
$ sudo snap login me@myself.com
Password: *********
2-factor: ******
Welcome!
Após esse login você conseguirá realizar o download das aplicações nas snaps stores.

#### Instalando aplicação

Ache uma aplicação na loja de aplicações: https://uappexplorer.com
Com exemplo utilizaremos a aplicação Gogs: https://uappexplorer.com/app/gogs.vtuson
Para instalar a aplicação Gogs, execute os seguintes comandos no terminal:
$ sudo snap -snap install gogs
Após isso execute no seu navegador: localhost:3001
Na página de configuração, apenas indique qual banco irá usar bem como o usuário e a senha para acessa-lo.