Linux: Como escolher uma distro sem transformar isso em religião
Um guia técnico e didático para escolher uma distribuição Linux olhando além do instalador: caso de uso, curva de aprendizagem, ciclo de atualização, mutabilidade, atomicidade e rollback.
Recentemente, um amigo me perguntou qual distribuição Linux deveria escolher.
É uma pergunta simples. Pelo menos parece.
Normalmente, esse tipo de conversa começa com Ubuntu, Fedora, Arch, Mint e alguma distribuição que apareceu ontem no Reddit prometendo resolver definitivamente todos os problemas do desktop Linux. Depois entram ambiente gráfico, consumo de memória, gerenciador de pacotes, quantidade de software disponível e, em algum momento, alguém recomenda Gentoo para uma pessoa que só queria abrir o navegador e jogar Minecraft.
Eu acho esse debate cansativo.
Não porque a escolha da distribuição não importe, mas porque quase sempre a discussão começa pelos nomes antes de começar pelos requisitos.
Enquanto eu tentava responder ao meu amigo, percebi que estava explicando coisas como ciclo de atualização, mutabilidade, atomicidade, snapshots e separação entre sistema e aplicações. A dúvida deixou de ser apenas “qual distro devo instalar?” e virou uma conversa sobre como sistemas operacionais são construídos, atualizados e recuperados quando alguma coisa quebra.
Então resolvi escrever este post.
Ele não pretende ser a comparação definitiva entre todas as distribuições Linux, até porque isso seria uma ótima maneira de nunca terminar o texto. A ideia é mais simples: ter uma resposta razoavelmente completa para evitar explicar a mesma coisa do zero toda vez que alguém me perguntar.
Também é um exercício para os dedos.
Fiquei algum tempo sem publicar nada por aqui, então este texto serve para tirar um pouco da ferrugem e organizar algumas ideias. Também adicionei suporte a tabelas markdown no blog, então este post estará cheio delas.
A pergunta não está errada, só está incompleta
“Qual distribuição devo escolher?” não é uma pergunta ruim.
O problema é que ela esconde várias perguntas menores.
A pessoa quer usar o computador para navegar, estudar e editar documentos? Quer jogar? Trabalhar com desenvolvimento? Montar um servidor? Aprender Linux por curiosidade? Configurar tudo manualmente? Instalar uma vez e esquecer que o sistema existe?
Cada resposta muda completamente a recomendação.
Uma distribuição pode ser excelente para alguém que gosta de entender cada parte da máquina e péssima para alguém que apenas precisa entregar um trabalho amanhã. Outra pode ser ótima para um notebook corporativo, mas frustrante para quem quer trocar o kernel, instalar módulos externos e modificar profundamente o sistema.
Isso acontece porque uma distribuição Linux não é apenas o kernel Linux acompanhado de um instalador e um papel de parede.
Ela é um conjunto de decisões.
Essas decisões incluem quais versões dos programas serão distribuídas, com que frequência elas serão atualizadas, por quanto tempo receberão correções, quais componentes serão configurados por padrão, como aplicativos serão instalados, quais mudanças o usuário pode fazer diretamente e o que acontece quando uma atualização falha.
Escolher uma distribuição é, em parte, escolher essas políticas.
Primeiro vem o que precisa funcionar
Antes de discutir filosofia, atomicidade ou qual gerenciador de pacotes tem a sintaxe mais bonita, existe uma camada mais simples: a máquina precisa fazer o trabalho esperado.
Se a pessoa depende de um programa específico, de uma placa de vídeo, de uma interface de áudio, de um módulo de kernel, de um jogo com anti-cheat ou de algum periférico incomum, isso deve ser verificado antes de qualquer preferência estética.
Não adianta recomendar uma distribuição elegante, declarativa e reproduzível se o adaptador Wi-Fi não funciona depois da instalação.
Também não existe uma propriedade abstrata chamada “bom suporte de hardware” que dependa apenas do nome da distribuição. O resultado vem de uma combinação entre versão do kernel, firmware, Mesa, drivers proprietários, patches mantidos pelo projeto e ferramentas fornecidas para instalar ou configurar esses componentes.
Distribuições com kernels mais recentes tendem a reconhecer hardware novo mais rapidamente. Distribuições conservadoras podem oferecer menos surpresas em máquinas já bem suportadas, mas demorar mais para incorporar drivers e recursos recentes.
A sessão live ajuda a testar teclado, rede, vídeo e áudio, mas não prova tudo. Suspensão, hibernação, GPU híbrida, consumo de bateria e drivers proprietários podem se comportar de forma diferente depois da instalação.
A primeira pergunta prática, portanto, não é “qual é a melhor distro?”.
É “o que obrigatoriamente precisa funcionar nesta máquina?”.
Caso de uso ainda importa
Depois das restrições eliminatórias, o caso de uso continua sendo o filtro mais útil.
Um desktop comum precisa de navegador, aplicativos gráficos, atualizações previsíveis e uma experiência razoável de instalação. Uma máquina de desenvolvimento pode precisar de containers, compiladores recentes, bibliotecas, virtualização e facilidade para criar ambientes isolados. Um servidor pode priorizar suporte prolongado, automação, segurança e mudanças controladas.
Esses perfis podem apontar para distribuições diferentes mesmo quando o hardware é o mesmo.
| Perfil | O que normalmente pesa mais |
|---|---|
| Desktop comum | Facilidade de instalação, codecs, drivers, aplicativos e documentação |
| Jogos | Kernel, Mesa, drivers de GPU, compatibilidade com Steam e atualizações recentes |
| Desenvolvimento | Toolchains, containers, documentação, bibliotecas e facilidade de recuperação |
| Servidor | Ciclo de suporte, previsibilidade, segurança, automação e disponibilidade de pacotes |
| Aprendizado | Transparência do sistema, documentação e espaço para experimentar |
| Appliance | Atualização automática, base controlada, rollback e pouca variação entre máquinas |
A tabela não produz automaticamente uma distribuição vencedora. Ela apenas elimina recomendações que nunca fizeram sentido para aquele contexto.
Para alguém que quer um desktop convencional e não pretende transformar a instalação em projeto pessoal, Linux Mint, Ubuntu ou Fedora Workstation costumam ser pontos de partida razoáveis.
Para quem quer entender mais profundamente uma instalação tradicional, Arch Linux pode ser interessante, desde que a pessoa saiba que parte da experiência é assumir a manutenção.
Para quem deseja explorar sistemas declarativos, NixOS entra em outra categoria. Para quem quer um desktop com base versionada e aplicações mais separadas do sistema, Fedora Silverblue, Kinoite, openSUSE Aeon e projetos semelhantes apresentam outro modelo.
Essas distribuições não estão necessariamente em uma escala linear que vai de “fácil” até “difícil”. Muitas vezes elas só exigem modelos mentais diferentes.
Uma distribuição é um conjunto de políticas
É comum comparar distribuições pelo gerenciador de pacotes.
Debian e Ubuntu usam APT. Fedora usa DNF. Arch usa pacman. openSUSE usa Zypper. Isso muda comandos, formatos de pacote e algumas características operacionais, mas raramente é a parte mais importante para uma escolha inicial.
Aprender que apt install virou dnf install é fácil.
Mais importante é descobrir de onde os pacotes vêm, como eles são testados, por quanto tempo recebem suporte, o que acontece durante uma atualização de versão e quanto trabalho é deixado para o usuário.
Debian Stable e Arch Linux são sistemas mutáveis com gerenciadores de pacotes tradicionais, mas têm políticas muito diferentes.
Debian Stable procura manter uma base conservadora, recebendo correções sem trocar agressivamente todos os componentes por versões novas. Arch segue um modelo contínuo de atualização, entregando software recente e esperando que o usuário acompanhe mudanças relevantes.
A diferença não está apenas nos comandos.
Está no contrato operacional.
Uma distribuição pode escolher estabilidade de interfaces. Outra pode priorizar novidades. Outra pode oferecer uma base controlada e direcionar aplicações para Flatpak. Outra pode descrever o sistema inteiro por configuração e gerar novas versões a partir dela.
É esse contrato que aparece no dia a dia, geralmente quando alguma coisa precisa ser atualizada, modificada ou recuperada.
“Estável” significa várias coisas
A palavra “estável” é usada de forma tão ampla que às vezes deixa de explicar qualquer coisa.
Para algumas pessoas, estabilidade significa que o sistema não trava. Para outras, significa que os programas mudam pouco. Também pode significar compatibilidade prolongada, suporte por vários anos ou simplesmente uma versão que já foi suficientemente testada.
Uma distribuição conservadora pode usar versões mais antigas de determinados programas e ainda manter correções de segurança por meio de backports. Nesse processo, a correção é adaptada para a versão existente sem trazer necessariamente todas as mudanças da versão mais recente.
Isso reduz alterações inesperadas, mas também pode deixar de fora funcionalidades novas.
Uma distribuição com atualizações frequentes pode entregar suporte melhor para hardware recente, novas versões do ambiente gráfico e toolchains modernas. Em troca, aumenta a quantidade de mudanças que chegam à máquina.
Nenhuma dessas políticas é universalmente melhor.
O problema aparece quando a pessoa diz que precisa de “tudo atualizado”, mas na verdade só precisa de Mesa, kernel e compiladores recentes. O restante do sistema poderia mudar muito menos.
Também acontece o contrário. Alguém escolhe uma distribuição conservadora para ter tranquilidade, mas depois adiciona cinco repositórios externos porque precisa de versões novas de todas as ferramentas. Nesse momento, parte da previsibilidade que motivou a escolha começa a desaparecer.
A pergunta útil não é apenas se o usuário prefere estabilidade ou novidades.
A pergunta é quais componentes precisam ser recentes e quais ele gostaria que mudassem pouco.
Mutabilidade: onde as mudanças acontecem
Em uma distribuição tradicional, o sistema instalado costuma ser mutável.
Isso significa que o estado ativo da máquina pode ser alterado diretamente. Quando o usuário instala um pacote, remove uma biblioteca, edita um arquivo em /etc ou executa um script como root, está modificando o sistema que será usado naquele mesmo momento.
É o modelo conhecido por quem utiliza Debian, Ubuntu, Fedora Workstation, Arch e muitas outras distribuições.
Ele é simples de entender porque a relação entre comando e resultado costuma ser direta. Você instala um pacote e ele aparece no sistema. Edita uma configuração, reinicia o serviço e a mudança entra em vigor.
Esse modelo também oferece muita liberdade.
É possível trocar kernel, instalar módulos, substituir bibliotecas, alterar serviços e modificar praticamente qualquer parte do host. Para desenvolvimento, experimentação e hardware incomum, essa flexibilidade pode ser bastante útil.
O custo aparece com o tempo.
Depois de alguns meses ou anos, o estado da máquina pode ser resultado de pacotes instalados e removidos, repositórios extras, arquivos editados manualmente, scripts executados como root e soluções temporárias que adquiriram estabilidade institucional.
A máquina continua funcionando, mas reproduzir exatamente aquele estado em outra instalação pode ser difícil.
Pior ainda, às vezes nem o próprio usuário lembra por que determinada alteração existe.
Sistema mutável não significa sistema desorganizado. Uma máquina tradicional pode ser muito bem administrada, documentada e automatizada. Significa apenas que o modelo permite mudanças diretas no sistema em execução.
O que chamamos de sistema imutável
Em oposição aos sistemas tradicionais, algumas distribuições são descritas como imutáveis.
O termo é útil, mas também causa confusão.
Uma distribuição imutável não é uma escultura digital que nunca pode ser alterada. O usuário continua instalando aplicativos, criando arquivos, modificando configurações e atualizando o sistema.
A diferença está principalmente no sistema base.
Em projetos como os Fedora Atomic Desktops, partes centrais da raiz são fornecidas como uma implantação versionada. Diretórios de dados e configuração continuam graváveis, enquanto o conteúdo principal do sistema não é tratado como uma coleção de arquivos que o usuário deve modificar livremente no lugar.
Em vez de alterar a base atual arquivo por arquivo, o sistema prepara outra implantação.
Uma descrição mais precisa seria “base controlada e versionada”, mas “imutável” venceu a disputa de marketing porque cabe melhor em título de projeto.
Na prática, a mutabilidade forma um espectro.
| Modelo | Comportamento |
|---|---|
| Sistema tradicional | Pacotes e arquivos modificam diretamente a raiz em uso |
| Sistema com snapshots | A raiz é mutável, mas estados anteriores podem ser registrados |
| Base versionada | O sistema principal é implantado como uma unidade controlada |
| Base com camadas | Pacotes adicionais geram uma nova variação da implantação |
| Ambiente declarativo | Uma configuração descreve e gera novas versões do sistema |
| Aplicações isoladas | O host muda pouco e programas vivem em Flatpak ou containers |
Isso é importante porque “mutável” e “imutável” não são dois clubes completamente separados.
Um desktop atômico pode permitir a instalação de pacotes no sistema base por meio de camadas. Um sistema tradicional pode usar snapshots e possuir excelente recuperação. Um sistema declarativo pode gerar novas versões sem impedir alterações locais em todos os diretórios.
O detalhe está em quais mudanças são incentivadas, como elas são aplicadas e quais partes entram no histórico do sistema.
Atomicidade: tudo ou nada
Atomicidade é outro conceito frequentemente usado junto de imutabilidade, embora não signifique a mesma coisa.
Uma operação atômica apresenta dois resultados aceitáveis: ela aconteceu por completo ou não aconteceu.
No contexto de uma atualização de sistema, isso significa que a máquina deve inicializar no estado antigo ou no estado novo. Ela não deveria terminar com metade dos componentes na versão anterior e metade na versão seguinte.
Em uma atualização tradicional, pacotes podem ser baixados, descompactados e configurados em sequência no sistema ativo. Se o processo for interrompido no momento errado, pode ser necessário concluir ou reparar a operação.
Gerenciadores de pacotes modernos fazem bastante trabalho para reduzir esse risco. Ainda assim, a mudança geralmente ocorre sobre a instalação em uso.
Em um sistema com atualização atômica, a próxima versão é preparada separadamente. Depois que ela está pronta, a referência usada no boot é trocada para o novo estado.
A documentação do OSTree compara esse processo a uma troca atômica de implantação. A nova árvore é preparada sem desmontar a anterior, e a alteração efetiva acontece quando o sistema passa a inicializar pela nova implantação.
Uma analogia simples seria reformar uma casa.
No modelo tradicional, a reforma acontece enquanto você ainda mora nela. Os cômodos são alterados aos poucos, e durante algum tempo a casa está no meio da obra.
No modelo atômico, a próxima versão da casa é preparada ao lado. Quando ela fica pronta, você muda a porta de entrada.
A analogia obviamente começa a sofrer quando entram /etc, /var, bancos de dados e bootloaders, mas já serve para evitar a ideia de que atomicidade é apenas um sinônimo mais técnico para “seguro”.
Atômico não significa imutável
É possível ter atomicidade sem uma base estritamente imutável.
O mecanismo de atualizações transacionais da SUSE, por exemplo, trabalha com snapshots. A alteração é aplicada em outro snapshot da raiz e só passa a ser usada quando a operação termina corretamente.
Também é possível ter um sistema com partes somente leitura sem que toda atualização seja uma única transação atômica.
As propriedades descrevem coisas diferentes.
| Conceito | Pergunta respondida |
|---|---|
| Mutabilidade | O sistema ativo pode ser modificado diretamente? |
| Imutabilidade | Quais partes não foram feitas para receber mudanças diretas? |
| Atomicidade | A transição acontece por completo ou pode ficar pela metade? |
| Transação | Quais mudanças são agrupadas em uma única operação? |
| Base por imagem | O sistema é distribuído como uma composição pronta? |
| Declaratividade | O usuário descreve o estado desejado ou executa passos manuais? |
| Reprodutibilidade | Os mesmos insumos conseguem gerar o mesmo resultado? |
| Rollback | É possível voltar para um estado anterior? |
Esses conceitos aparecem juntos em muitas distribuições porque se complementam, mas não devem ser tratados como sinônimos.
Uma distro pode ser mutável e possuir rollback. Pode ser baseada em imagem e não ser declarativa. Pode ser declarativa e gerar versões atômicas. Pode ter snapshots sem entregar builds reproduzíveis.
A sopa de termos fica menos assustadora quando cada palavra responde a uma pergunta diferente.
Existem várias maneiras de fazer isso
Atualizações atômicas não dependem de uma única tecnologia.
Projetos diferentes chegaram a modelos diferentes porque estão resolvendo problemas parecidos com prioridades diferentes.
| Modelo | Como funciona | Exemplos |
|---|---|---|
| Pacotes no sistema ativo | O gerenciador modifica a instalação em uso | Debian, Ubuntu, Fedora Workstation e Arch |
| Snapshot transacional | As mudanças entram em outro snapshot da raiz | openSUSE MicroOS e Aeon |
| Árvore versionada | Uma nova implantação inicializável é criada | Fedora Silverblue e Kinoite |
| Partições A/B | Uma raiz é usada enquanto a outra recebe a atualização | Sistemas baseados em ABRoot |
| Gerações declarativas | Uma configuração produz uma nova geração do sistema | NixOS |
| Imagem OCI inicializável | O sistema é distribuído como uma imagem de container inicializável | Sistemas construídos com bootc |
Nos Fedora Atomic Desktops, o OSTree mantém árvores versionadas do sistema. O rpm-ostree adiciona a integração com o ecossistema RPM e permite gerar implantações contendo pacotes adicionais.
No openSUSE MicroOS e em projetos relacionados, o transactional-update aplica mudanças sobre snapshots do sistema de arquivos.
O ABRoot trabalha com duas raízes. Enquanto uma está ativa, a outra pode receber a próxima versão. Depois da atualização, os papéis são trocados.
No NixOS, pacotes e configurações são construídos em caminhos separados no Nix Store. A ativação aponta o sistema para uma nova geração, enquanto gerações anteriores podem continuar disponíveis.
Com bootc, o sistema operacional pode ser construído e distribuído por imagens OCI, aproximando o gerenciamento do host de práticas já comuns no mundo dos containers.
Todos esses modelos podem oferecer atualizações mais controladas e algum mecanismo de retorno. Isso não significa que apresentem o mesmo comportamento, o mesmo consumo de disco ou a mesma facilidade de customização.
Atomicidade é uma propriedade.
OSTree, snapshots, A/B, Nix e imagens OCI são maneiras diferentes de implementá-la em algum escopo.
O escopo da transação importa
Dizer que um sistema possui atualizações atômicas ainda deixa uma pergunta importante.
O que exatamente está dentro da transação?
Pode ser apenas a instalação de um pacote. Pode ser o conjunto de pacotes de uma operação. Pode ser o sistema de arquivos raiz. Pode ser uma implantação completa contendo kernel, bibliotecas e serviços. Pode ser uma imagem inteira do sistema operacional.
Quanto maior o escopo, menor a chance de componentes centrais terminarem fora de sincronia.
Ao mesmo tempo, nem todos os dados da máquina devem necessariamente fazer parte dessa transação.
Arquivos pessoais, logs, containers e bancos de dados precisam sobreviver às atualizações. Por isso, sistemas baseados em imagem geralmente separam o sistema base das áreas persistentes.
Essa divisão melhora a previsibilidade da base, mas cria outra responsabilidade: entender o que volta durante um rollback e o que continua avançando.
O sistema muda, só muda de outro jeito
Uma crítica comum a distribuições imutáveis é que elas não permitem instalar programas.
Isso seria um pequeno problema para um sistema operacional de desktop.
O que realmente acontece é uma separação de responsabilidades.
Aplicativos gráficos podem ser instalados por Flatpak. Ferramentas de desenvolvimento podem viver em Toolbx, Distrobox ou outros containers. Serviços e componentes que precisam fazer parte do host podem ser adicionados por mecanismos de camadas ou por uma imagem customizada.
Nos Fedora Atomic Desktops, a documentação inicial recomenda Flatpak para aplicações gráficas, Toolbx para muitos fluxos de linha de comando e rpm-ostree para alterações que realmente precisam integrar a base.
A ideia é evitar que instalar um editor, um cliente de chat ou uma ferramenta de desenvolvimento altere desnecessariamente a composição central do sistema.
Isso muda o modelo mental.
Em uma distribuição tradicional, o gerenciador de pacotes do host costuma ser a resposta padrão para quase tudo.
Em um desktop atômico, a primeira pergunta passa a ser onde aquele programa deveria viver.
| Tipo de software | Local comum |
|---|---|
| Aplicativo gráfico | Flatpak |
| Ferramenta de desenvolvimento | Toolbx, Distrobox ou container |
| Biblioteca específica de um projeto | Ambiente do projeto |
| Driver ou módulo | Sistema base |
| Serviço integrado ao host | Camada do sistema ou imagem customizada |
| Dados pessoais | Diretório persistente do usuário |
Essa separação pode deixar a máquina mais organizada e reduzir diferenças acidentais entre instalações.
Também pode incomodar.
Containers de desenvolvimento compartilham recursos com o host e adicionam uma camada de abstração. Flatpaks dependem das permissões e portais oferecidos pelo sandbox. Ferramentas que esperam encontrar bibliotecas em caminhos tradicionais podem exigir adaptação.
Não existe almoço grátis, especialmente quando o almoço foi empacotado em Flatpak e precisa acessar um diretório fora do sandbox.
Container de desenvolvimento não é uma máquina virtual
Toolbx e Distrobox são úteis justamente porque criam ambientes bastante integrados ao desktop.
Eles conseguem compartilhar o diretório pessoal, sockets gráficos, dispositivos e outros recursos. Isso permite abrir editores, compilar programas e executar ferramentas como se estivessem instaladas diretamente na máquina.
Essa integração também significa que eles não devem ser tratados automaticamente como uma forte fronteira de segurança.
A própria documentação do Toolbx explica que o ambiente foi projetado para conveniência de desenvolvimento, não como uma sandbox rígida contra código malicioso.
Flatpak possui outro objetivo. Ele aplica isolamento a aplicativos e libera acesso ao host por permissões e portais. Mesmo assim, a proteção real depende das permissões concedidas. Um aplicativo com acesso amplo ao diretório pessoal continua enxergando uma parte importante dos dados do usuário.
“Está em container” não encerra a discussão de segurança.
Às vezes só muda o diretório onde a discussão acontece.
Rollback não é backup
Quando alguém vê que uma distribuição possui rollback, é fácil imaginar um botão universal de desfazer.
Não é.
Rollback normalmente retorna o sistema base para uma implantação, geração ou snapshot anterior. Isso pode incluir kernel, bibliotecas, executáveis e parte das configurações.
Dados persistentes costumam ficar fora.
O sistema pode voltar, mas o diretório pessoal continua como estava. Os containers continuam como estavam. Os logs continuam como estavam. O banco de dados pode continuar com o formato produzido pela versão mais nova da aplicação.
Esse último caso é particularmente importante.
Imagine que uma atualização instala uma nova versão de um serviço e executa uma migração no banco de dados. Depois disso, o usuário faz rollback do sistema operacional. A aplicação antiga volta, mas os dados continuam no formato novo.
A implantação anterior pode estar tecnicamente intacta e ainda assim não conseguir abrir o banco.
Isso não significa que rollback seja inútil. Ele é excelente para recuperar uma máquina que deixou de inicializar, um driver que parou de funcionar ou uma atualização que introduziu uma regressão no sistema base.
Significa apenas que rollback do sistema não substitui backup, versionamento de dados e planejamento de migrações.
Snapshot também não é necessariamente backup.
Se o snapshot está no mesmo disco e o disco morre, ele participa do funeral junto com o restante dos dados.
Atomicidade também não elimina bugs
Uma atualização pode ser perfeitamente atômica e ainda instalar uma versão defeituosa.
Atomicidade protege contra estados intermediários incompletos. Ela não prova que a versão nova funciona corretamente.
A imagem pode ter sido construída sem erro e ainda conter um driver incompatível, uma regressão no kernel ou uma configuração ruim.
Por isso, atualização atômica, validação, health checks, rollout gradual e rollback automático são propriedades diferentes.
Um sistema pode garantir que a atualização será aplicada por completo, mas exigir que o usuário escolha manualmente a implantação anterior no boot.
Outro pode testar o estado novo e voltar automaticamente caso algum serviço essencial não inicialize.
Outro pode apenas manter a versão anterior disponível, deixando toda a decisão para o administrador.
“Atualização atômica” é uma informação importante, mas não encerra a análise.
Declarativo é outra conversa
NixOS costuma aparecer em discussões sobre imutabilidade, atomicidade e reprodutibilidade porque reúne várias dessas ideias.
A característica mais marcante, porém, é o modelo declarativo.
Em uma administração tradicional, o usuário executa passos.
Instala um pacote, edita um arquivo, habilita um serviço e altera uma configuração. O estado final é consequência da sequência de comandos.
Em um modelo declarativo, o usuário descreve o estado desejado.
A configuração informa quais pacotes, serviços, usuários e opções devem existir. O sistema usa essa descrição para construir uma nova geração.
Isso não significa que absolutamente tudo na máquina seja automaticamente reproduzível. Dados pessoais, segredos, estado de aplicações e mudanças fora da configuração continuam precisando de tratamento.
Ainda assim, a declaração cria uma fonte mais clara para parte importante do sistema.
Se a configuração está versionada, fica mais fácil entender por que determinado serviço existe, comparar mudanças e recriar a máquina.
O custo é aprender outro modelo.
Nix possui uma linguagem própria, um sistema de pacotes diferente e conceitos que não se parecem imediatamente com APT, DNF ou pacman. Para alguém vindo de uma distribuição tradicional, o início pode ser mais confuso do que instalar pacotes manualmente.
Depois que o modelo faz sentido, algumas tarefas se tornam mais previsíveis.
Antes disso, até instalar um programa simples pode parecer uma reunião entre programação funcional e administração de sistemas organizada por alguém que não gosta de caminhos convencionais.
Reprodutível não significa apenas “igual”
Reprodutibilidade também merece cuidado.
No uso informal, as pessoas chamam um sistema de reproduzível quando conseguem aplicar a mesma configuração em várias máquinas e obter ambientes parecidos.
A definição rigorosa de build reproduzível é mais forte. Dados os mesmos códigos fonte, ambiente e instruções, partes independentes devem conseguir gerar artefatos idênticos.
Baixar a mesma imagem em duas máquinas garante consistência de implantação, mas não prova que o processo que gerou a imagem é reproduzível.
Ter um arquivo de configuração em Git ajuda a recriar um sistema, mas não garante que todas as dependências serão exatamente as mesmas no futuro.
Ter rollback também não garante reprodutibilidade. Apenas preserva estados anteriores.
Essas propriedades podem trabalhar juntas, mas resolvem problemas diferentes.
Uma imagem controla o que será implantado. Uma configuração declarativa descreve o estado desejado. Um build reproduzível permite verificar que os mesmos insumos geram o mesmo artefato. Um rollback permite retornar ao estado anterior.
Misturar tudo em uma única palavra deixa a tecnologia mais bonita e a explicação menos útil.
A curva de aprendizagem não é uma linha
É comum colocar distribuições em uma escala que começa em “fácil” e termina em “difícil”.
Essa escala é limitada.
Existem diferentes dificuldades.
Uma distribuição pode ser fácil de instalar e difícil de manter. Outra pode exigir uma instalação manual, mas depois funcionar de maneira bastante previsível. Outra pode ter um desktop simples e exigir um modelo completamente novo quando o usuário tenta modificar o sistema.
| Tipo de dificuldade | Exemplo |
|---|---|
| Instalação | Particionamento, bootloader, rede e criptografia |
| Uso cotidiano | Drivers, codecs, aplicativos e integração do desktop |
| Manutenção | Atualizações, conflitos, intervenções e upgrades |
| Arquitetura | Entender imagens, camadas, containers e gerações |
| Diagnóstico | Descobrir onde uma alteração deve ser feita |
| Personalização | Modificar o sistema sem lutar contra o modelo proposto |
Arch cobra bastante na instalação e na manutenção consciente. Em troca, oferece um sistema tradicional e transparente, com documentação excelente.
NixOS cobra na linguagem, no modelo declarativo e na forma diferente de pensar dependências. Em troca, oferece gerações, configuração versionável e grande controle sobre a composição.
Fedora Silverblue pode ser simples para navegar, instalar Flatpaks e atualizar. A dificuldade aparece quando o usuário tenta seguir um tutorial escrito para uma distribuição mutável e descobre que instalar tudo diretamente no host não é mais a resposta padrão.
Ubuntu e Mint reduzem bastante a fricção inicial, mas isso não significa que escondam para sempre toda a complexidade do Linux. Em algum momento ainda existem drivers, permissões, serviços, systemd e aquele pacote instalado por um tutorial de 2018 que ninguém sabe mais remover.
A melhor curva de aprendizagem é a que combina com o que a pessoa pretende aprender.
Filosofia e governança também importam
Distribuições não são apenas produtos técnicos. Elas também são projetos com modelos de governança, financiamento e prioridades.
Algumas são mantidas principalmente por comunidades. Outras possuem empresas financiando grande parte do desenvolvimento. Algumas priorizam exclusivamente software livre. Outras facilitam drivers, codecs e componentes proprietários.
Isso afeta decisões práticas.
Um projeto com empresa por trás pode oferecer suporte comercial, certificações e integração com fornecedores. Um projeto comunitário pode ter processos mais abertos e independência maior de interesses comerciais.
Nenhum dos modelos garante automaticamente boa manutenção.
Uma distribuição pequena pode oferecer uma experiência excelente, mas depender de poucas pessoas. Uma distribuição grande pode possuir infraestrutura robusta e ainda tomar decisões que parte da comunidade não gosta.
Também vale observar se a distro é uma base principal ou uma derivação.
Derivações podem entregar configurações melhores para um público específico, mas adicionam outra camada entre o usuário e o projeto original. Quando surge um problema, é importante saber quem mantém os pacotes, quem publica as correções e de onde vem a documentação aplicável.
Escolher distribuição também é escolher de quem você dependerá quando algo quebrar.
Segurança não vem apenas do nome da distro
Outra simplificação comum é tratar algumas distribuições como seguras e outras como inseguras.
Segurança depende de atualização, configuração, superfície exposta, permissões, isolamento e comportamento do usuário.
Distribuições fazem escolhas relevantes. Fedora costuma entregar SELinux ativo por padrão. Ubuntu integra AppArmor. Projetos atômicos podem reduzir alterações acidentais no sistema base. Distribuições conservadoras podem oferecer manutenção prolongada e backports.
Nada disso salva uma máquina com serviços desnecessários expostos, senha ruim, scripts aleatórios executados como root e software sem atualização.
Uma base somente leitura vulnerável continua vulnerável.
Um sistema declarativo pode reproduzir uma configuração insegura com eficiência admirável.
Um rollback pode levar você de volta para a versão antiga que já possuía a vulnerabilidade.
A arquitetura da distribuição ajuda a criar boas propriedades operacionais, mas não substitui administração responsável.
Segurança continua sendo camadas.
Infelizmente nenhuma delas se chama “instalar distro recomendada por youtuber”.
Como eu reduziria as opções
Depois de explicar tudo isso, a pessoa ainda precisa instalar alguma coisa.
Uma forma prática de reduzir as opções é cruzar experiência desejada com modelo operacional.
| O que a pessoa procura | Famílias razoáveis para testar |
|---|---|
| Desktop simples e convencional | Linux Mint, Ubuntu e Fedora Workstation |
| Base conservadora e suporte prolongado | Debian Stable e Ubuntu LTS |
| Software recente sem abandonar o modelo tradicional | Fedora Workstation e openSUSE Tumbleweed |
| Controle manual e aprendizado do sistema tradicional | Arch Linux |
| Desktop com base atômica | Fedora Silverblue, Kinoite e openSUSE Aeon |
| Ambiente declarativo e versionável | NixOS |
| Sistema especializado para jogos | Distribuições voltadas a jogos, depois de verificar hardware e manutenção |
| Servidor previsível | Debian, Ubuntu LTS, distribuições empresariais ou sistemas próprios para infraestrutura |
A palavra importante na tabela é “testar”.
Recomendação de distribuição não deveria ser tratada como casamento religioso. É possível iniciar por uma opção convencional, aprender o que realmente incomoda e depois migrar com critérios melhores.
Também não há prêmio por começar pela distribuição mais difícil.
Se a pessoa quer aprender Linux, quase qualquer distribuição permite estudar processos, permissões, rede, shell, systemd, sistemas de arquivos e containers. Instalar Arch manualmente ensina algumas coisas importantes, mas não é a única porta de entrada para conhecimento técnico.
Da mesma forma, usar Ubuntu não impede ninguém de aprender profundamente o sistema. Só evita que a primeira aula precise ser dada pelo bootloader às duas da manhã.
O que eu recomendaria
Depois de toda a conversa, minha recomendação inicial ainda seria relativamente simples.
Para alguém começando e querendo usar o computador normalmente, eu escolheria uma distribuição popular, com boa documentação, comunidade grande e um desktop convencional. Linux Mint, Ubuntu ou Fedora Workstation entram facilmente nessa conversa.
A escolha entre elas dependeria mais do hardware, da preferência de desktop e da tolerância a atualizações do que de qualquer superioridade absoluta.
Se a pessoa quer aprender manutenção manual e entende que isso faz parte da experiência, Arch se torna uma opção interessante.
Se ela está curiosa sobre modelos modernos de desktop, quer rollback e gosta da ideia de separar aplicações da base, um Fedora Atomic Desktop pode valer o teste.
Se o objetivo é aprender sistemas declarativos e transformar a configuração da máquina em código, NixOS faz sentido, mas eu não apresentaria isso como o caminho mais simples para quem ainda está descobrindo o que é /etc.
A recomendação muda conforme o objetivo.
É exatamente por isso que responder apenas com o nome de uma distribuição quase sempre é insuficiente.
A melhor distro é a que cobra o preço certo
Toda distribuição cobra alguma coisa.
Algumas cobram antes, durante a instalação.
Outras cobram depois, na manutenção.
Algumas cobram em versões mais antigas de software. Outras cobram em atualizações frequentes. Algumas entregam liberdade para modificar qualquer parte do sistema e deixam o usuário administrar as consequências. Outras controlam a base, oferecem rollback e esperam que as mudanças sigam caminhos específicos.
A escolha não é entre uma distro boa e todas as outras ruins.
É entre conjuntos diferentes de compromissos.
Caso de uso, hardware, disponibilidade de software e comunidade continuam sendo critérios importantes. Mas a análise fica muito melhor quando também inclui mutabilidade, atomicidade, modelo de atualização, separação entre sistema e aplicações e estratégia de recuperação.
Esses conceitos parecem excessivamente técnicos para alguém que só perguntou qual Linux instalar.
Até o dia em que uma atualização quebra, um tutorial modifica o lugar errado, um pacote precisa de uma versão mais nova ou o usuário descobre que “imutável” não significa que os arquivos pessoais voltam no rollback.
No fim, escolher uma distribuição não é escolher um logo, um wallpaper ou o comando mais bonito para instalar pacotes.
É escolher como você quer que a máquina mude.
E, principalmente, qual tipo de problema você prefere resolver quando ela mudar.