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é.