Data: 27 de agosto de 2025 às 21:28
Por: Jefferson Carneiro
A tempos eu busco ter um fluxo de trabalho que seja automatizado para novas instalações caso precise e que seja portável. Meu setup de programas não é complexo, eu uso muito poucos softwares no dia a dia que são mais para edição de video, gravação, virtualização e alguma coisa para programação. A maioria das coisas eu portei para web, então meu fluxo ficou bem tranquilo.
Resolvi fazer um experimento a um tempo atrás com o Debian, a distribuição que venho utilizando no meu desktop nos últimos tempos e consegui criar um fluxo legal. Nada complexo, mas que me serve muito bem. Uma das coisas que mais estou odiando nos últimos tempos é ficar sujando o sistema e deixando ele pesado, estou preferindo deixar em container a maioria das coisas.
Nesta pegada eu acabei testando por quase 2 meses o Fedora Kinoite, uma distribuição que conseguiu dar um passo na frente (o futuro meu amigo(a)) e é bem decente de se usar. Com sua base imutável e atômica o sistema consegue ser muito sólido! Quero criar um video sobre ele e uma postagem futuramente.
A pegada desses tipos de sistemas que estão ganhando força é que a base não pode ser tocada. Em vez disso, você realiza atualizações, instalações ou remoções em camadas, o que gera uma nova entrada no bootmanager. Com esse formato, é possível fazer rollback de maneira muito fácil. A atualização atômica atualiza por completo, tudo ou nada.
A parte de softwares fica como se é imutável? Bom, você pode faz tudo na parte do userspace (na sua maioria) e deve utilizar flatpaks, distrobox, toolbox entre outras ferramentas e nos últimos casos o rpm-ostree. Desta forma você fica muito bem servido na parte de software.
Eu adorei o sistema, deu para aprender muito sobre a pegada dessas distros, porém eu sou um fuçador nato, gosto de ter a liberdade completa e o que mais amei acabei que me sentindo limitado. Então eu pensei, por que não seguir essa lógica no Debian? Deixar o sistema/base somente com softwares realmente necessários como Desktop (kde plasma), softwares de dev como (git, docker, distrobox), (firewall) e o resto meter com flatpak com força!
Eu segui esse caminho, então eu tenho um sistema estável e sólido como o debian e 95% dos meus softwares com flatpak, totalmente isolados em container. Isso tambem garante que daqui 1 ano, quando o Debian estiver com softwares mais velhos, eu ainda tenho as novidades e versões recentes.
(OBS: Flatpak por usar isolamento não significa que é impenetravel! Apenas te dar margem a menos ataque.)
Como eu sou um shellzeiro nato, criei um script muito simples que faz toda a pós instalação do Debian com tudo que eu preciso! Resolvi tambem por a base de instalação/remoção em um arquivo yaml que ficou assim:
slackjeff@atomic:~$ cat packages.yaml
packages:
apt:
install:
- flatpak
- wget
- curl
- git
- fastfetch
- distrobox
- docker.io
- kate
remove:
- firefox-esr
hold:
- startdict-*
flatpak:
install:
- org.mozilla.firefox
- org.ferdium.Ferdium
- com.obsproject.Studio
- org.keepassxc.KeePassXC
- org.kde.kdenlive
- org.virtmanager.virt-manager
- org.virtmanager.virt_manager.Extension.Qemu
Por que yaml? Bom, um que é totalmente legível e posso criar "profile" muito facilmente, se eu estiver em um base RH posso só alterar a linha (apt) para (dnf) por exemplo e talvez ter que modificar nome de pacote ou algo do tipo. Antes eu usava Array associativas mas eu migrei para isso.
E o script? Bom vou postar só umas linhas para não pesar esse post, está assim as principais funções:
DEBIAN_POST_INSTALL()
{
echo -e "[${fgGreen}✓${fgEnd}] ${fgBlue} Debian PostInstall. ${fgEnd}"
# Atualize a lista e softwares ;)
sudo apt update && sudo apt upgrade -y
# Começamos removendo os softwares que não utilizo
# por padrão.
sudo apt purge $(yq eval '.packages.apt.remove | join(" ")' ${config} -y
# Adicione no blacklist o maldito
# stardict e suas vertentes.
sudo apt-mark hold $(yq eval '.packages.apt.hold | join(" ")' ${config}
# Faça instalação de alguns pacotes de desenvolvimento
# que utilizo com frequência.
sudo apt install $(yq eval '.packages.apt.install | join(" ")' ${config}
}
#Instalação de Flatpaks
FLATPAK_INSTALL()
{
echo -e "[${fgGreen}✓${fgEnd}] ${fgBlue} Flatpak Add remote repo... ${fgEnd}"
flatpak \
remote-add \
--if-not-exists flathub \
https://dl.flathub.org/repo/flathub.flatpakrepo
#==================#
# Flatpak Packages
#==================#
for flatpak in $(yq eval '.packages.flatpak.install | .[]' ${config}); do
echo -e "[${fgGreen}✓${fgEnd}] ${fgBlue} Install: ${flatpak} ${fgEnd}"
flatpak --assumeyes install "${flatpak}"
done
}
Note a facilidade de lidar com yaml com o yq!
Bom esse é meu fluxo que vou utilizar por um bom tempo: Debian + flatpak + distrobox (para quebrar coisas). Abraços e até.