Debian e Ubuntu: Guia Completo de Administração
Debian e Ubuntu formam a família de distribuições Linux mais difundida do mundo, tanto em servidores quanto em estações de trabalho. Se você está começando na administração de sistemas, é muito provável que sua primeira máquina Linux rode uma dessas duas distribuições. Neste guia, vamos cobrir tudo o que você precisa para administrar um sistema Debian ou Ubuntu no dia a dia: o gerenciamento de pacotes com APT, a configuração de repositórios, as atualizações de versão e a solução dos problemas mais comuns.
1. Debian e Ubuntu: Quais São as Diferenças?
O Ubuntu é construído a partir do Debian: cerca de 90 % dos pacotes do Ubuntu vêm diretamente dos repositórios do Debian. As duas distribuições compartilham, portanto, o mesmo formato de pacotes (.deb), o mesmo gerenciador APT e grande parte da documentação. No entanto, elas diferem em vários pontos importantes.
| Critério | Debian | Ubuntu |
|---|---|---|
| Mantenedor | Projeto comunitário | Canonical (empresa) |
| Ciclo de lançamento | Aproximadamente a cada 2 anos, «quando estiver pronto» | A cada 6 meses, datas fixas |
| Versões LTS | Cada versão estável (~5 anos com LTS) | Uma LTS a cada 2 anos (5 anos de suporte) |
| Estabilidade | Muito conservadora, pacotes consolidados | Pacotes mais recentes |
| Software proprietário | Separado (non-free) | Integrado com mais facilidade |
| Snap | Ausente por padrão | Instalado e usado por padrão |
| Público-alvo | Servidores, puristas do software livre | Iniciantes, estações de trabalho, nuvem |
Resumindo: o Debian privilegia a estabilidade e a liberdade de software, enquanto o Ubuntu privilegia a facilidade de uso e a atualidade dos pacotes. Para um servidor de produção, ambos são excelentes escolhas.
2. Entendendo o Ciclo de Versões e as LTS
As versões do Ubuntu
O Ubuntu publica uma versão a cada seis meses, numerada pelo ano e mês de lançamento: 24.04 significa abril de 2024. A cada dois anos, a versão de abril é uma LTS (Long Term Support), com suporte por cinco anos. As versões intermediárias recebem suporte por apenas nove meses.
# Exibir a versão instalada
lsb_release -a
# Alternativa sem lsb_release
cat /etc/os-release
Regra simples: em um servidor, instale sempre uma LTS (20.04, 22.04, 24.04…). As versões intermediárias são reservadas às estações de trabalho de usuários que querem as novidades mais recentes.
As versões do Debian
O Debian mantém três ramos em paralelo:
- stable: a versão de produção, atualizada apenas para correções de segurança;
- testing: a futura versão estável, em preparação;
- unstable (sid): o ramo de desenvolvimento, onde chegam os novos pacotes.
Cada versão estável recebe um nome de código tirado dos personagens de Toy Story (Bookworm, Trixie…). Uma versão estável tem suporte por cerca de três anos pela equipe de segurança e, depois, por mais dois anos pelo projeto LTS.
3. APT em Profundidade
O APT (Advanced Package Tool) é a ferramenta central do gerenciamento de pacotes. Aqui estão os comandos que você usará todos os dias.
Atualizar a lista de pacotes
# Baixa os índices dos repositórios (não modifica nada no sistema)
sudo apt update
Esse comando não atualiza nada: ele apenas atualiza a lista de pacotes disponíveis. É preciso sempre executá-lo antes de uma instalação ou atualização.
Atualizar os pacotes instalados
# Atualiza os pacotes sem remover nem instalar novos
sudo apt upgrade
# Atualiza permitindo a instalação ou remoção de pacotes
# (necessário para atualizações do kernel, por exemplo)
sudo apt full-upgrade
A diferença é importante: upgrade recusa qualquer atualização que exija a remoção de um pacote, enquanto full-upgrade (antes dist-upgrade) aceita resolver mudanças de dependências. Em um servidor, acostume-se a ler com atenção o que o full-upgrade propõe antes de confirmar.
Instalar e remover pacotes
# Instalar um pacote
sudo apt install nginx
# Instalar vários pacotes de uma vez
sudo apt install curl git htop
# Remover um pacote mantendo seus arquivos de configuração
sudo apt remove nginx
# Remover um pacote E seus arquivos de configuração
sudo apt purge nginx
# Remover as dependências que se tornaram desnecessárias
sudo apt autoremove
Execute apt autoremove regularmente: quando você remove um pacote, suas dependências continuam instaladas e se acumulam com o tempo.
Pesquisar e inspecionar pacotes
# Pesquisar um pacote por palavra-chave
apt search "serveur web"
# Exibir os detalhes de um pacote (versão, tamanho, dependências, descrição)
apt show nginx
# Listar as versões disponíveis e sua origem
apt-cache policy nginx
# Listar as dependências de um pacote
apt-cache depends nginx
# Listar os pacotes que dependem de um pacote
apt-cache rdepends nginx
O pinning: fixar ou priorizar versões
O pinning permite controlar qual versão de um pacote o APT deve preferir, por exemplo para impedir uma atualização ou para obter um pacote de um repositório específico.
# Impedir qualquer atualização de um pacote (método simples)
sudo apt-mark hold nginx
# Permitir novamente as atualizações
sudo apt-mark unhold nginx
# Listar os pacotes congelados
apt-mark showhold
Para um controle mais refinado, crie um arquivo em /etc/apt/preferences.d/:
# /etc/apt/preferences.d/nginx-pin
# Prioridade > 1000: força esta versão mesmo que seja preciso fazer downgrade
Package: nginx
Pin: version 1.24.*
Pin-Priority: 1001
4. sources.list e os Repositórios
Onde os repositórios são definidos
Os repositórios do APT são declarados em /etc/apt/sources.list e nos arquivos do diretório /etc/apt/sources.list.d/. Nas versões recentes (Debian 12+, Ubuntu 24.04+), o formato «deb822» em arquivos .sources substitui progressivamente o formato antigo.
# Formato antigo (uma linha por repositório)
# tipo URL distribuição componentes
deb http://deb.debian.org/debian bookworm main contrib non-free-firmware
deb http://security.debian.org/debian-security bookworm-security main
Os componentes têm um significado preciso:
- main: software livre com suporte oficial;
- contrib (Debian): software livre que depende de software não livre;
- non-free / non-free-firmware (Debian): software e firmwares proprietários;
- universe / multiverse (Ubuntu): pacotes mantidos pela comunidade e não livres.
Modificar os repositórios corretamente
# Nunca modifique o sources.list manualmente sem fazer backup
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
# Adicione de preferência seus repositórios de terceiros em arquivos separados
sudo nano /etc/apt/sources.list.d/mon-depot.list
# Após qualquer modificação, atualize os índices
sudo apt update
Os repositórios de terceiros modernos exigem uma chave de assinatura armazenada em /etc/apt/keyrings/ e referenciada com a opção signed-by:
# Exemplo: adição do repositório oficial do Docker
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \
sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo "deb [signed-by=/etc/apt/keyrings/docker.gpg] \
https://download.docker.com/linux/ubuntu noble stable" | \
sudo tee /etc/apt/sources.list.d/docker.list
5. Os PPA no Ubuntu
Os PPA (Personal Package Archives) são repositórios pessoais hospedados no Launchpad, específicos do ecossistema Ubuntu. Eles permitem obter versões mais recentes de um software do que as dos repositórios oficiais.
# Adicionar um PPA (adiciona o repositório e sua chave automaticamente)
sudo add-apt-repository ppa:ondrej/php
sudo apt update
# Remover um PPA
sudo add-apt-repository --remove ppa:ondrej/php
# Remover um PPA e fazer downgrade dos pacotes para as versões oficiais
sudo apt install ppa-purge
sudo ppa-purge ppa:ondrej/php
Atenção: um PPA é mantido por um indivíduo ou uma equipe de terceiros. Adicione apenas PPA de fontes reconhecidas e evite-os em servidores de produção quando existir uma alternativa oficial.
6. dpkg: o Nível Baixo
O APT se apoia no dpkg, a ferramenta de baixo nível que realmente instala os arquivos .deb. Você precisará dele em algumas situações específicas.
# Instalar um arquivo .deb baixado manualmente
sudo dpkg -i paquet.deb
# Se o dpkg indicar dependências ausentes, deixe o APT resolvê-las
sudo apt install -f
# Método moderno recomendado: o apt gerencia o .deb E suas dependências
sudo apt install ./paquet.deb
# Listar todos os pacotes instalados
dpkg -l
# Verificar se um pacote está instalado
dpkg -l | grep nginx
# Listar os arquivos instalados por um pacote
dpkg -L nginx
# Descobrir a qual pacote pertence um arquivo
dpkg -S /etc/nginx/nginx.conf
7. Atualização de Versão
Ubuntu: do-release-upgrade
O Ubuntu oferece uma ferramenta dedicada para passar de uma versão para a seguinte:
# 1. Atualizar totalmente o sistema antes de qualquer coisa
sudo apt update && sudo apt full-upgrade
sudo reboot
# 2. Iniciar a atualização de versão
sudo do-release-upgrade
# Verificar o comportamento configurado (lts ou normal)
cat /etc/update-manager/release-upgrades
Com Prompt=lts nesse arquivo, a ferramenta só oferece a passagem de LTS para LTS (22.04 para 24.04, por exemplo), que é a configuração recomendada em servidores. Observe que a atualização de uma LTS para a seguinte só é oferecida após o lançamento da primeira versão de correção (24.04.1, por exemplo).
Debian: modificação das fontes
No Debian, a atualização de versão é feita alterando o nome de código nas fontes e depois executando uma atualização completa:
# 1. Fazer backup e substituir o nome de código (ex. bookworm -> trixie)
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
sudo sed -i 's/bookworm/trixie/g' /etc/apt/sources.list
# 2. Atualização em duas etapas, conforme recomendam as notas de versão
sudo apt update
sudo apt upgrade --without-new-pkgs
sudo apt full-upgrade
sudo reboot
Em todos os casos: faça um backup completo antes da atualização de versão, leia as notas de versão e nunca pule uma versão (ir diretamente do Debian 11 para o 13 não é suportado).
8. Atualizações Automáticas com unattended-upgrades
Em um servidor, aplicar automaticamente as correções de segurança é uma boa prática praticamente indispensável.
# Instalação e ativação
sudo apt install unattended-upgrades
sudo dpkg-reconfigure -plow unattended-upgrades
A configuração fica em /etc/apt/apt.conf.d/50unattended-upgrades:
// Trecho de configuração típico
Unattended-Upgrade::Allowed-Origins {
"${distro_id}:${distro_codename}-security";
};
// Reinicialização automática se necessário (ex. atualização do kernel)
Unattended-Upgrade::Automatic-Reboot "true";
Unattended-Upgrade::Automatic-Reboot-Time "04:00";
# Testar a configuração sem aplicar nada
sudo unattended-upgrade --dry-run --debug
# Consultar os logs
less /var/log/unattended-upgrades/unattended-upgrades.log
9. Snap vs APT
O Ubuntu promove o formato Snap, pacotes autocontidos que incluem suas próprias dependências. O assunto divide opiniões, e é útil entender as vantagens e desvantagens.
| Critério | APT (.deb) | Snap |
|---|---|---|
| Dependências | Compartilhadas entre pacotes | Embutidas em cada snap |
| Tamanho em disco | Pequeno | Grande (bibliotecas duplicadas) |
| Atualidade das versões | Fixa durante a vida da versão | Sempre a última versão |
| Atualizações | Controladas pelo administrador | Automáticas (difíceis de bloquear) |
| Inicialização dos aplicativos | Rápida | Mais lenta (montagem squashfs) |
| Isolamento de segurança | Nenhum por padrão | Confinamento em sandbox |
| Disponibilidade | Todas as distribuições .deb | Principalmente Ubuntu |
# Comandos básicos do snap
snap list # snaps instalados
sudo snap install code --classic
sudo snap refresh # atualizar
sudo snap remove code
Na prática: em um servidor, prefira o APT para tudo o que estiver disponível em .deb. Os snaps continuam relevantes para aplicativos de desktop recentes ou ferramentas que o desenvolvedor distribui somente dessa forma.
10. Solução de Problemas Comuns
Bloqueio do dpkg: «Could not get lock»
Essa mensagem aparece quando outro processo já está usando o APT (frequentemente uma atualização automática em segundo plano):
# Identificar o processo que mantém o bloqueio
sudo lsof /var/lib/dpkg/lock-frontend
# Aguardar o término dele ou verificar os processos apt em andamento
ps aux | grep -E "apt|dpkg"
Só remova o arquivo de bloqueio manualmente como último recurso, depois de verificar que nenhum processo apt ou dpkg está em execução: remover o bloqueio durante uma instalação em andamento pode corromper o banco de dados de pacotes.
# Somente como último recurso, se nenhum processo estiver ativo
sudo rm /var/lib/dpkg/lock-frontend /var/lib/dpkg/lock
sudo dpkg --configure -a
Dependências quebradas
# Tentar o reparo automático
sudo apt install -f
# Concluir a configuração dos pacotes interrompidos
sudo dpkg --configure -a
# Limpar o cache e baixar novamente os índices
sudo apt clean
sudo apt update
# Reinstalar um pacote danificado
sudo apt install --reinstall nom-du-paquet
Espaço em disco saturado pelo cache do APT
# Ver o tamanho do cache
du -sh /var/cache/apt/archives
# Remover apenas os .deb de versões obsoletas
sudo apt autoclean
# Esvaziar completamente o cache
sudo apt clean
Boas Práticas
- Em servidores, instale apenas versões LTS (Ubuntu) ou stable (Debian).
- Execute
sudo apt updateantes de qualquer instalação ou atualização. - Leia a lista de mudanças propostas pelo
full-upgradeantes de confirmar. - Ative o
unattended-upgradespara as correções de segurança. - Adicione repositórios de terceiros em
/etc/apt/sources.list.d/com uma chavesigned-by, nunca no arquivo principal. - Limite os PPA ao estritamente necessário e evite-os em produção.
- Faça um backup completo antes de cada atualização de versão.
- Faça uma limpeza regular com
apt autoremoveeapt autoclean.
Conclusão
Debian e Ubuntu oferecem um dos ecossistemas de gerenciamento de pacotes mais maduros do mundo Linux. Dominando o APT, a estrutura dos repositórios, os mecanismos de atualização de versão e os poucos reflexos de solução de problemas apresentados aqui, você tem tudo o que precisa para administrar esses sistemas com tranquilidade no dia a dia. O próximo passo lógico do seu aprendizado: o gerenciamento de serviços com systemd, a configuração do firewall com ufw e a automação das suas implantações. Pratique em uma máquina virtual, quebre coisas, conserte-as: é assim que se progride.
Sobre InSkillCoach
Especialista em treinamento e tecnologias
Coach especializado em tecnologias avançadas e IA, apoiado pela GNeurone Inc.
Certificações:
- AWS Certified Solutions Architect – Professional
- Certificações Google Cloud
- Microsoft Certified: DevOps Engineer Expert
- Certified Kubernetes Administrator (CKA)
- CompTIA Security+
Comentários
Os comentários são alimentados pelo GitHub Discussions
Conecte-se com o GitHub para participar da discussão