Ubuntu Core e Snappy

A muito tempo que sistemas UNIX passam por ” reformas ” no seu gerenciamento de pacote, tal como o Linux passou durante muito tempo, assim foi com o Solaris que passou a utilizar o IPS (Image Packaging System) ao inves do SVR4 Packages e o proprio FreeBSD que além do ports, agora oferece o PKGNG, facilitando muito o trabalho do administrador de sistemas. Me recordo quando usava o Slackware 3.5/3.6, eu precisava compilar tudo, tudo mesmo pois eu me indignava em instalar as pseudo-facilidades apresentadas no diretório /extras da imagem de instalação como o slackpkg ou slapt-get. Minha ideia de sistemas UNIX sempre foi, caçar suas dependencias e compilar uma por uma. Isso me fez naquela epoca conhecer muito mais o sistema, tal como as diferenças do /usr/share par o sistema de pacotes pré-compilados, como o /usr/local para toda a hierarquia local de compilações no meu sistema. Compilando me fez buscar o entedimento de tudo o que meu sistema faz no FHS, como libs, binarios ou scripts e a organização de cada uma delas. O mais importante em uma compilação é porque voce diz ao software pelo script que prepara a instalação aonde eu quero que ele esteja (–prefix=) ou com qualquer outra opção que oriente o meu preparador do código o que ele deve compilar e porque. Quando voce instala um pacote pré-compilado como o rpm e deb, voce apenas esta pegando um programa que ja passou pelo processo de compilação e dizendo “ei cara, conforme todo o meu sistema instalado atraves de uma imagem, que usa esse grupo de processadores para a arquitetura XX, que tem por padrão estes diretórios, apenas [descompacte] os arquivos aqui”. Se assustou com a palavra descompacte? Entao digita ai dpkg -c seu_pacote.deb ou rpm -qpl seu_pacote.rpm.

Ai as coisas evoluiram e cada vez mais os ambientes gráficos facilitam através de [frontend] as instalações de pacotes no sistema. Bom, no Fedora voce encontra o gnome-software /usr/bin/gnome-software e no Ubuntu voce encontra o Ubuntu Software Center para facilitar as coisas do usuário, que na verdade sao frontends para o rpm (no caso Fedora) e dpkg (no caso Ubuntu) instalar. Só que tanto o gnome-software, tanto o ubuntu software center limita o usuário final de ler o que ele precisa, ou seja, voce não instala bibliotecas por la e nada daquilo a mais que voce consegue fazer via yum/dnf ou apt-get.  Agora porque? Porque ele quer que você [usuário], esteja instalando pacotes sem se preocupar com que será instalado ou não ver o que esta sendo instalado. Mas para que né? Eu não gosto dessa maneira de windowsnalizar um software, mas fazer.. cada um com a sua opinião. Eu particularmente removo tudo isso! Amo meu disco. Apesar, em falar no apt-get uma das coisas mais bonitinhas que vi no dpkg foi ter o “Progress Bar” ativado por padrão em /etc/apt/apt.conf.d/99progressbar. Sabe aquela barrinha de porcentagem que fica rolando enquanto o dpkg instala tudo? Então, fala que não ficou maneira?

A grande novidade que vem para o Ubuntu Desktop (não vou falar sobre o phone) é o Snappy que na verdade ja é uma realidade. Assim como acontece la no Android voce terá essa possibilidade de instalar pacotes no sistema de uma maneira completamente diferente do que acontece no sistema deb(dpkg) e por isso não ele “o novo Ubuntu core” não funcionará com o tradicional dpkg. A grande vatagem dele é que o pacote para o UbuntuCore será composto apenas do nome do pacote, a versão do sistema, a arquitetura para qual será instalada e o binário (ou binarios relacionados). Isso vai facilitar a vida dos desenvolvedores que disponibilizará o programa atraves destas imagens associadas ao Ubuntu Core e não preso a relase do Ubuntu e o desenvolvedor terá uma prévia garantia de funcionamento do programa instalado no seu sistema. Da mesma maneira, fazendo uma referencia proxima mas não idêntica, se parece com o que acontece no Android e iOS como voce instala baseado no core do sistema, seja 2.x, 3.x, 4.x, 5.x ou 6.x (nunca se esqueça de todo o framework do sistema). Porque o nucleo do sistema será sempre o mesmo.

Não podemos esquecer tambem que o Ubuntu Core que é a base para o sistema snappy, é um projeto que circula na canonical a muito tempo, muito tempo mesmo e foi projetado para rodar em ambientes (ou particionamentos) virtuais abaixo de 400MB (especificamente 380MB) muito próximo o que se tem em outras plataformas, funcionando como um ” minimal linux ” rodando neste caso, o Ubuntu.

Como ja mencionei o snappy é diferente de um sistema Debian tradicional pois assim como acontece no Android ele isola cada subsistema ou aplicação em uma area em readonly, empacota cada aplicativo e implementa em um diretório isolado do filesystem e atualiza cada aplicacao e todo o sistema nestas areas, facilitando a instalação, o uso e não permitindo ele quebrar pacotes e o sistema ja que as aplicações são escritas para rodar nos docker-containers atraves de suas ferramentas, ou seja, uma imagem pronta para instalação de cada pacote ja que é restrito ao framework pelos desenvolvedores, como ja mencionei, o que facilita a instalação e atualização dos mesmos. Tambem vale lembrar que quando voce atualiza uma aplicação pelo Snappy as alterações são aplicadas apenas na partição de leitura e possui a segurança de um auto-remove ou um modo automatico para reverter a instalação dos programas caso aconteça algum erro, exatamente como voce tem no Android ;)

O mais interessante é que o proprio Mark Shuttleworth prometeu em seu blog, sempre que o Ubuntu for atualizado o Ubuntu Core será atualizado em conjunto.

Para instalar o Snappy no seu Ubuntu, basta adicionar o seguite ppa e instala o pacote: snappy-tools

$ sudo add-apt-repository ppa:snappy-dev/tools
$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install snappy-tools bzr

Apos instalar e reiniciar o seu sistema voce tem o comando snappy que permite instalar, consultar e remover pacotes. Basicamente funciona quase da mesma maneira como o apt, como [install] para instalar, [remove] ou [purge] para remover e remover todo o bundle com suas configurações, [search] que permite consultar os bundles instalados, [build] prepara um pacote snap, [list] que permite listar todos os pacotes e podendo aumentar o verbose com -v, [rollback] que permite voltar uma versão atras antes da atualização de um pacote, [update] atualiza todos os bundles de snaps instalados no seu Ubuntu Core e [info] que permite visualizar informações do snap package (chamado de snapp). Existem outras opções que trabalham com a respectiva ” loja “, vem novidades ai, acredito. Estas instalaçoes e atualizações sempre serão baseadas nas versões do Ubuntu Core disponível. Engraçado é voce tentar instalar alguma coisa via apt, voce vai receber a seguinte mensagem: ” Ubuntu Core does not use apt-get, see ‘snappy –help’ “,bom, não sei como vai ficar essa historia quando for adaptado em Desktop, mas os caras prometeram, continua baseado no Debian.

Como mencionei, comandos como:
$ snappy list -v
$ sudo snappy install programa
$ sudo snappy remove programa
$ sudo snappy info programa
$ sudo snappy update programa
*E note que voce pode tambem atualizar o proprio ubuntu-core, que é o seu micro-sistema, assim como o kvm.

Para saber sempre a versão do Ubuntu Core e seus programas, como os desenvolvedores de cada um
$ snappy info
* o que antes era realizado com snappy version

Agora, procurando nerdicamente entender o binario do snappy, procurei ver o que ele faz no Ubuntu Core e observei algumas coisas interessantes como ele sempre atento ao launchpad.net/snappy/, de onde obtem muitas informações. Outros detalhes como no sub-sistema dele totalmente organizado com os diretórios log/, enconding/, net/, text/, mime/, crypto/, tudo bem organizado em /usr/lib/go/, /build e outras coisas que me mostram ser um sistema bastante completo. (não adianta procurar isso no seu Ubuntu, vai encontrar apenas os diretórios no kernel source).

Toda vez que voce instalar um pacote pelo Snappy ele será armazenado em /apps/<package>/current/, sempre sendo orientado na estrutura dos arquivos pelo metadado encontrado em meta/package.yaml, o que facilita um snapshot de todo o sistema de pacotes instalados como o backup fácil e até mesmo quando voce quiser adicionar alguma coisa. Toda vez que voce instala um pacote ele será referenciado ao nome do binário, basicamente o que ja acontece na lista do dpkg pelo PKGNAME (o que voce pode consultar com o dpkg -l). Suas informações de instalação como as libs utilizadas estarão em /var/lib/apps/<pkgname>/current/ e todos os dados pessoais referente ao uso da aplicação e/ou programa pelo usuário estão disponíveis em /home/$USER/apps/<pkgname>/current/. Porque vale lembrar, a aplicação será instalado em dois mundos, do sistema e do usuário. Voce pode usar o bzr para puxar alguns exemplos em lp:~snappy-dev/snappy-hub/snappy-examples.

Outra coisa que me chamou atenção é a possibilidade de acesso remoto por ele (será que vem com o plugin da NSA automaticamente instalado? rsrs). Basta acessar remotamente pela porta 8022 como no exemplo abaixo.

snappy-remote –url=ssh://endereço_de_ip:8022 install ./app.snap

Sem duvidas o Ubuntu Core + Snappy será um grande avanço para o avanço de alguma distribuição Linux em desktops, lembrando que a interface gráfica é de uso opicional e suas ferramentas graficas. Pq Linux não é Windows ;)

ATUALIZAÇÃO: as aplicações instaladas pelo Snappy lembram do Mac OS X? Bom, até que sim mas se parece mais com o que existe no iOS, seu entendimento esta disponivel no Apple Developer. No caso do MacOS as aplicações são instaladas de diversas maneiras, pela Apple Store, MacPorts (sim ele é considerado oficial e licenciado pela apple, ao contrario do brew), Através de pkg disponibilizados por imagens .dmg que são automaticamente montadas em /Volumes para que o installer (comando), instale o bundle .pkg (isso também é feito pela aplicação grafica). As aplicações do OSX são distribuidas em /Applications e contém o diretório [.app] que podem ser abertas pelo comando open ou executadas diretamente por linha de comando em /Applications/SEU PROGRAMA/Contents/MacOS/BINARIO_DA_APLICACAO ou atraves de 2 cliques pelo LaunchPad do OSX. La dentro voce encontra os arquivos PkgInfo que contem informações do bundle e a assinatura. Mas o pacote também é distribuido pelo sistema como em /Users/<SEU USUARIO>/Library/Application Support/ ou /Library, onde estão todas as informações de gerenciamento pelo launchd, como os arquivos plist. Ou seja, a aplicação ela vem pronta e são funcionais conforme o framework do sistema. Por isso que o Snappy lembra, mas não adiciona as aplicações em Docker Containers como o Snappy, isso acontece de forma parecida no iOS e Android.

Por fim, minha avaliação final e “pessoal” sobre o Ubuntu-Core e Snappy é: não gostei, pois ele vai fazer o seu ubuntu se parecer um android e isso mata totalmente a ideia de distribuição linux, como conhecemos…

Bom, eu queria comentar mais.. Mas vou parando por aqui. Sobre qual a distro que eu uso, tenho uma instalação do Ubuntu em um desktop da Dell mas a minha distribuição é o Fedora.

Powered by Moblie Video for WordPress + Daniel Watrous