O Guia de Dev pra Quem Não Quer Dor de Cabeça
O Fedora Silverblue mudou o jogo. A imutabilidade do sistema traz uma segurança incrível e os rollbacks salvam vidas. Mas, se você programa, instalar o Git, Neovim ou o Hugo com o rpm-ostree vira um pesadelo. Polui o sistema todo e exige reinicialização toda hora.
Acho que a melhor saída é usar o Distrobox como BoxBuddy. Você cria, gerencia e move seus ambientes de trabalho sem estressse.
O que são Distrobox e BoxBuddy?
O Distrobox uusa o Podman pra criar containers integrados ao seu sistema. Nada de máquinas virtuais pesadas. Ele acessa seus arquivos da pasta /home e seus periféricos direto.
O BoxBuddy traz a interface visual em Flatpak. Você monta distros em poucos cliques, idela pra quem odeia decorar comandos.
Montando seu primeiro ambiente
Se curte praticidade visual, abra o BoxBuddy, clique no botão de soma e escolha sua imagem. Dê um nome legal pro container, tipo fedora-dev-utils.
Prefere o terminal? Então manda bala nesses comandos:
# Criar um novo container
distrobox create --name fedora-dev-utils --image fedora:latest
# Acessar o ambiente
distrobox enter fedora-dev-utils
Lá dentro, instale o que quiser. Não tem perigo de quebrar o Silverblue. Rodamos isso aqui pra atualizar e instalar as ferramentas:
# Atualiza os pacotes de software instalados no Linux (Fedora, RHEL, CentOS)
sudo dnf update
# Instalação dos programas
sudo dnf install git neovim hugo jekyll
Aí vem o truque! Pra rodar esses apps no terminal do Silveblue, você exporta o binário:
distrobox-export --bin /usr/bin/nvim --export-path ~/.local/bin
distrobox-export --bin /usr/bin/hugo --export-path ~/.local/bin
Só não esquece de colocar a pasta ~/.local/bin no seu PATH dentro do .bashrc.
Automatizando tudo no Script
Exporta programa por programa cansa rápido. Talvez sem bem vindo criar um xcript de automação dentro do container.
Crie o arquivo ~/exportar-tudo.sh:
#!/bin/bash
# Define que o interpretador a ser usado é o Bash.
# --- LISTAS DE EXPORTAÇÃO ---
# Lista de binários (programas de linha de comando).
# Exemplo: distrobox-export --bin /usr/bin/git
BINARIOS=(
"/usr/bin/git"
"/usr/bin/nvim"
"/usr/bin/hugo"
"/usr/bin/jekyll"
) # Fecha a lista de binários.
# Lista de aplicativos (geram ícones no menu do sistema).
# Exemplo: distrobox-export --app vlc
APLICATIVOS=(
) # Fecha a lista de aplicativos comerciais/GUI.
# Lista de serviços (daemons/systemd).
Exemplo: distrobox-export --service sshd
SERVICOS=(
) # Exemplo de lista vazia para testar a lógica do script.
# --- FUNÇÃO DE PROCESSAMENTO ---
# Criamos uma função para evitar repetir código para cada tipo de exportação.
exportar_tudo() {
local TIPO=$1 # Primeiro argumento: o nome amigável (Binários, Aplicativos, etc).
local FLAG=$2 # Segundo argumento: a flag do comando (--bin, --app, --service).
shift 2 # Remove os dois primeiros argumentos para sobrar apenas a lista de itens.
local ITENS=("$@") # Armazena o restante dos argumentos como a lista de itens a processar.
# Verifica se a quantidade de itens na lista é igual a zero.
if [ ${#ITENS[@]} -eq 0 ]; then
# Informa ao usuário que não há nada para processar nesta categoria.
echo "--> [AVISO] A lista de $TIPO está vazia. Pulando..."
# Retorna para continuar o script sem erro.
return
fi # Fim da verificação de lista vazia.
# Exibe qual categoria está sendo processada no momento.
echo "Iniciando exportação de $TIPO..."
# Inicia o laço para percorrer cada item da lista recebida.
for ITEM in "${ITENS[@]}"; do
# O comando 'distrobox-export' faz a ponte entre o container e o host.
# $FLAG define se é --bin, --app ou --service.
distrobox-export "$FLAG" "$ITEM" --export-path ~/.local/bin
# Exibe mensagem de confirmação para cada item processado.
echo "[OK] $TIPO exportado: $ITEM"
done # Fim do laço 'for'.
} # Fim da definição da função.
# --- EXECUÇÃO ---
# Chama a função para processar os Binários usando a flag --bin.
exportar_tudo "Binários" "--bin" "${BINARIOS[@]}"
# Chama a função para processar os Aplicativos usando a flag --app.
exportar_tudo "Aplicativos" "--app" "${APLICATIVOS[@]}"
# Chama a função para processar os Serviços usando a flag --service.
exportar_tudo "Serviços" "--service" "${SERVICOS[@]}"
# Exibe a mensagem final de conclusão do script.
echo "Processo concluído com sucesso!"
Dê permissão e rede o script:
chmod +x ~/exportar-tudo.sh/usr
./exportar-tudo.sh.
Levando seu Container para outro PC
Configurou o ambiente perfeito no Desktop e quer levar para o Notebook? É fácil.
No Computador de Origem (Exportar)
Salve o container como uma imagem:
podman commit fedora-dev-utils meu-setup-custom
Exporte para um arquivo:
podman save meu-setup-custom -o meu-setup.tar
No Computador de Destino (Importar)
Transfira o arquivo .tar e carregue a imagem:
podman load -i meu-setup.tar
Recrie o container no Distrobox:
distrobox create --name fedora-dev-utils --image localhost/meu-setup-custom
Atenção:
Entre no container e rode o seu script exportar-tudo.sh para recriar os atalhos no novo sistema!
Dicas Extras de Performance
Mesclagem de Home: O Distrobox compartilha sua /home. Se você tem configurações de plugins do Neovim em ~/.config/nvim, elas funcionarão automaticamente em qualquer container que tenha o Neovim instalado.
Múltiplas Distros: Use um container Arch Linux via Distrobox para ter acesso ao AUR, enquanto mantém a estabilidade do Fedora Silverblue como base.
O uso de containers via Distrobox transforma o Fedora Silverblue em uma estação de trabalho indestrutível e altamente flexível.