0%
Debian e Ubuntu: Guia Completo de Administração

Debian e Ubuntu: Guia Completo de Administração

Aprenda a administrar Debian e Ubuntu: APT, repositórios, PPA, dpkg, atualizações de versão e solução de problemas. Guia completo com exemplos práticos.

I

InSkillCoach

· min

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érioDebianUbuntu
MantenedorProjeto comunitárioCanonical (empresa)
Ciclo de lançamentoAproximadamente a cada 2 anos, «quando estiver pronto»A cada 6 meses, datas fixas
Versões LTSCada versão estável (~5 anos com LTS)Uma LTS a cada 2 anos (5 anos de suporte)
EstabilidadeMuito conservadora, pacotes consolidadosPacotes mais recentes
Software proprietárioSeparado (non-free)Integrado com mais facilidade
SnapAusente por padrãoInstalado e usado por padrão
Público-alvoServidores, puristas do software livreIniciantes, 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érioAPT (.deb)Snap
DependênciasCompartilhadas entre pacotesEmbutidas em cada snap
Tamanho em discoPequenoGrande (bibliotecas duplicadas)
Atualidade das versõesFixa durante a vida da versãoSempre a última versão
AtualizaçõesControladas pelo administradorAutomáticas (difíceis de bloquear)
Inicialização dos aplicativosRápidaMais lenta (montagem squashfs)
Isolamento de segurançaNenhum por padrãoConfinamento em sandbox
DisponibilidadeTodas as distribuições .debPrincipalmente 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 update antes de qualquer instalação ou atualização.
  • Leia a lista de mudanças propostas pelo full-upgrade antes de confirmar.
  • Ative o unattended-upgrades para as correções de segurança.
  • Adicione repositórios de terceiros em /etc/apt/sources.list.d/ com uma chave signed-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 autoremove e apt 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.

InSkillCoach

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+
1.1k
190

Comentários

Os comentários são alimentados pelo GitHub Discussions

Conecte-se com o GitHub para participar da discussão

Link copiado!