Construindo seu primeiro Flatpak
Se quiserem me doar um café pelo PagSeguro do UOL: https://pag.ae/7Vu8Tt-pn
Depois de uma semana testando o Fedora Silverblue em duas máquinas, passei a usar vários pacotes Flatpak, pois precisava conhecer melhor seu funcionamento. Eu sou meio “das antigas” e prefiro usar os pacotes do repositório da distribuição Linux que estiver usando (no Fedora temos um repositório de flatpaks também, ainda pequeno). No entanto, não posso negar que existem vantagens no uso dos Flatpaks — as quais não vou abordar aqui para não sair do foco do artigo.
O tutorial a seguir é praticamente uma tradução da documentação presente no link http://docs.flatpak.org/en/latest/first-build.html
Ferramentas necessárias
Precisamos do flatpak e do flatpak-builder. No meu sistema (Fedora 31 Workstation), eles já vem instalados. Veja como instalar no seu sistema — provavelmente os dois pacotes estão nos repositórios da maioria das distribuições Linux, ou você pode instalar o flatpak-builder como qualquer flatpak
flatpak install flathub org.flatpak.Builder
Instalando o SDK necessário
Para construirmos nosso programa flatpak, vamos precisar do SDK apropriado para isso. Aqui temos um ponto bastante discutido na comunidade, o tamanho dos SDKs e Runtimes, mas isso será debatido em outras mídias (offtopic).
flatpak install flathub org.freedesktop.Platform//18.08 org.freedesktop.Sdk//18.08
Criando o programa
Sugiro que você organize seus arquivos em algum diretório, para que não fiquem misturados com outras coisas.
Dentro do diretório que escolhemos, vamos escrever o script, será um script em shell Bash para homenagear meu querido professor Blau Araújo, com quem faço um curso — https://debxp-linux.blogspot.com/
Vamos criar o arquivo infoscript.sh e colocar o seguinte conteúdo:
#!/usr/bin/env bash
clear
echo “”
echo “Informações super importantes!”
echo “ — — — — — — — — — — — — — — — — — — -”
echo -n “Usuário : “
whoami
echo -n “Hostname: “
hostname
echo -n “Uptime : “
uptime -p
echo -n “Kernel : “
uname -rms
echo “ — — — — — — — — — — — — — — — — — — -”
echo “”
Criando o “manifesto”
Todo pacote flatpak é construído usando um arquivo manifest que possui informações básicas sobre o programa e instruções para que ele seja construído (ou, no novo verbo, “buildado”). Vamos criar o arquivo org.leandroramos.Infoscript.json (OK, não precisam usar o meu nome aqui) no mesmo diretório onde colocamos o infoscript.sh, e adicionar o seguinte conteúdo (adapte para o seu uso aí):
{
"app-id": "org.leandroramos.Infoscript",
"runtime": "org.freedesktop.Platform",
"runtime-version": "18.08",
"sdk": "org.freedesktop.Sdk",
"command": "infoscript.sh",
"modules": [
{
"name": "infoscript",
"buildsystem": "simple",
"build-commands": [
"install -D infoscript.sh /app/bin/infoscript.sh"
],
"sources": [
{
"type": "file",
"path": "infoscript.sh"
}
]
}
]
}
Construindo o programa (build)
Agora que o nosso programa tem um manifesto, o flatpak-builder pode construir o pacote. Ao especificar o build-dir (que pode ter outro nome), teremos um diretório com o build do programa.
flatpak-builder build-dir org.leandroramos.Infoscript.json
Testando o build do programa
Me perdoem por misturar as palavras construção e build, mas acho que não devo mais traduzir assim.
Para testar o programa, vamos usar o flatpak-builder. Usando o parâmetro run, o programa terá quase as mesmas permissões de um programa final, exceto as permissões de acesso ao sistema de arquivos.
flatpak-builder --run build-dir org.leandroramos.Infoscript.json infoscript.sh
Colocando o pacote num repositório
Antes de podermos instalar e rodar o programa, ele precisa estar em um repositório. Vamos criar um repositório local para o nosso primeiro programa, e devo lembrar que você pode colocar o nome que quiser no repositório, pois estamos trabalhando localmente.
flatpak-builder --repo=leandroramos --force-clean build-dir org.leandroramos.Infoscript.json
O comando acima vai fazer o build novamente e exportar o resultado para um diretório chamado leandroramos — que é o meu repositório local. O segundo parâmetro (force-clean) vai esvaziar o diretório build-dir criado anteriormente.
Instalando o programa
Antes de instalarmos o programa, como todo flatpak, precisamos adicionar o repositório à nossa lista de remotos (você pode consultar a página Using Flatpak para entender melhor).
flatpak --user remote-add --no-gpg-verify leandroramos leandroramos
Depois podemos listar os remotos para conferir se o novo repositório foi adicionado
flatpak remotes
E, depois, podemos instalar o programa
flatpak --user install leandroramos org.leandroramos.Infoscript
Note que passamos o parâmetro --no-gpg-verify
quando adicionamos o repositório leandroramos à lista de remotos do flatpak. Faça isso somente em testes locais. Para publicar programas em repositórios oficiais você deve assinar os pacotes com chave privada GPG.
Finalmente, rodando o programa
O nosso programa não possui lançadores nem integração alguma com o sistema, e nem precisaria no momento. Então, vamos executá-lo a partir do terminal (a partir de qualquer lugar do sistema, não precisamos mais estar no diretório de criação do pacote).
flatpak run org.leandroramos.Infoscript
Por enquanto é só, pessoal. Abraços!