Gerenciamento de Pacotes do Ubuntu: Guia Rápido de APT e dpkg

Comandos essenciais de APT e dpkg para pacotes Ubuntu

O sistema de gerenciamento de pacotes do Ubuntu é a estrutura de suporte para instalação e manutenção de software, sendo conhecimento essencial para qualquer usuário de Linux ou administrador de sistemas.

tetris Esta imagem foi gerada pelo modelo AI Flux 1 dev.

O que é o Gerenciamento de Pacotes APT?

APT (Advanced Package Tool) é o sistema de gerenciamento de pacotes principal do Ubuntu, herdado do Debian. É uma ferramenta poderosa de linha de comando para instalar, atualizar e remover pacotes de software. O APT resolve automaticamente dependências, conecta-se aos repositórios oficiais do Ubuntu e é o método tradicional para gerenciar pacotes de sistema no Ubuntu e em distribuições baseadas no Debian. Se você é novo no Ubuntu, consulte nosso guia sobre como instalar o Ubuntu 24.04 e ferramentas úteis para começar com um sistema configurado corretamente.

Características Principais:

  • Nativo ao Ubuntu/Debian: Integrado, não é necessário instalar nada adicional
  • Bibliotecas Compartilhadas: Uso eficiente do disco por meio de dependências do sistema compartilhadas
  • Atualizações Manuais: Você controla quando os pacotes são atualizados
  • Sem Sandboxing: Os pacotes têm acesso completo ao sistema (adequado para ferramentas de sistema)
  • Leve: Não há daemon em segundo plano, executa apenas quando invocado
  • Ecosistema Maduro: Décadas de desenvolvimento, extremamente estável

Comparação de Gerenciadores de Pacotes

O Ubuntu suporta vários sistemas de gerenciamento de pacotes. Aqui está como as principais operações se comparam:

Operação APT Snap Flatpak
Buscar apt search keyword snap find keyword flatpak search keyword
Instalar sudo apt install package sudo snap install package flatpak install flathub app.id
Listar Instalados apt list --installed snap list flatpak list --app
Mostrar Informações apt show package snap info package flatpak info app.id
Atualizar Todos sudo apt update && sudo apt upgrade sudo snap refresh flatpak update
Atualizar Único sudo apt install --only-upgrade pkg sudo snap refresh package flatpak update app.id
Remover sudo apt remove package sudo snap remove package flatpak uninstall app.id
Limpar sudo apt autoremove snap remove --revision=N flatpak uninstall --unused
Repositório /etc/apt/sources.list Snap Store (integrado) Adicionar com flatpak remote-add

Comparação Rápida de Funcionalidades

Funcionalidade APT Snap Flatpak
Atualizações Automáticas Não Sim Não
Sandboxing Não Sim Sim
Dependências Bibliotecas do sistema Empacotadas Runtimes compartilhados
Tamanho do Pacote Pequeno (5-50MB) Grande (50-500MB) Médio (20-200MB)
Necessário Root Sim Sim Não (instalação do usuário)
Velocidade de Inicialização Rápida Mais lenta Rápida
Melhor Para Pacotes de sistema Aplicações universais Aplicações de desktop

Sobre Este Guia

Este guia se concentra no APT (apt/apt-get/dpkg) - o sistema tradicional de gerenciamento de pacotes do Ubuntu. O APT é essencial para gerenciar pacotes, bibliotecas e serviços no Ubuntu e em sistemas baseados no Debian.

Para outros gerenciadores de pacotes:

Cada gerenciador de pacotes tem suas vantagens. Use APT para pacotes de sistema e dependências, Snap para compatibilidade entre versões e atualizações automáticas, e Flatpak para aplicações de desktop com permissões granulares.


Gerenciamento de Pacotes APT - Guia Detalhado

Entendendo APT vs apt-get

APT (apt) - Escolha Moderna

Introduzido no Ubuntu 14.04, apt combina funcionalidades de apt-get e apt-cache com uma experiência do usuário aprimorada:

Vantagens:

  • Barras de progresso e saída colorida
  • Comandos mais intuitivos
  • Saída mais limpa para leitura humana
  • Combina a funcionalidade de múltiplas ferramentas

Quando usar: Operações diárias interativas na linha de comando

apt-get - Escolha Tradicional

A ferramenta original de gerenciamento de pacotes, ainda amplamente utilizada:

Vantagens:

  • API mais estável (melhor para scripts)
  • Compatibilidade para trás
  • Formato de saída previsível
  • Controle mais fino

Quando usar: Scripts de shell, automação, sistemas legados

Dica Profissional: Para navegação mais rápida no terminal e eficiência no fluxo de trabalho, consulte nossa folha de dicas de atalhos do teclado do Ubuntu para aumentar sua produtividade ao gerenciar pacotes.

Comandos Essenciais de Gerenciamento de Pacotes

Atualizando Listas de Pacotes

Sempre atualize as listas de pacotes antes de instalar ou atualizar:

# Atualizar índice de pacotes
sudo apt update

# Ou com apt-get
sudo apt-get update

Este comando atualiza o banco de dados local com informações sobre pacotes disponíveis e suas versões dos repositórios configurados.

Instalando Pacotes

Instalação Básica:

# Instalar um único pacote
sudo apt install package-name

# Instalar múltiplos pacotes
sudo apt install package1 package2 package3

# Instalar uma versão específica
sudo apt install package-name=version-number

Exemplos:

# Instalar servidor web Nginx
sudo apt install nginx

# Instalar Python e pip
sudo apt install python3 python3-pip

# Instalar ferramentas essenciais de compilação
sudo apt install build-essential

# Instalar ferramentas de monitoramento do sistema
sudo apt install htop

Para necessidades de monitoramento especializadas, como rastrear o desempenho da GPU em sistemas com cartas NVIDIA, consulte nosso guia sobre aplicações de monitoramento de GPU no Linux/Ubuntu.

Instalar sem prompts (útil para scripts):

sudo apt install -y package-name

# Ou
sudo DEBIAN_FRONTEND=noninteractive apt install -y package-name

Instalar a partir de um arquivo .deb:

# Método 1: Usando apt (recomendado, lida com dependências)
sudo apt install ./package.deb

# Método 2: Usando dpkg
sudo dpkg -i package.deb
sudo apt install -f  # Corrigir dependências faltantes

Nota: Ao trabalhar com arquivos .deb baixados, você pode querer usar um gerenciador de arquivos com um menu de contexto bom. Veja nossa comparação de gerenciadores de arquivos para Ubuntu 24.04 (Nautilus vs Nemo vs Dolphin vs Caja) para encontrar um que se adapte ao seu fluxo de trabalho.

Atualizando Pacotes

Atualizar Pacotes Instalados:

# Atualizar todos os pacotes (seguro, não removerá pacotes)
sudo apt upgrade

# Atualizar um pacote específico
sudo apt install --only-upgrade package-name

# Atualização completa (pode remover pacotes para resolver dependências)
sudo apt full-upgrade

# Atualização de distribuição (para atualizações de versão principal)
sudo apt dist-upgrade

Sequência Completa de Atualização:

# Procedimento recomendado de atualização
sudo apt update
sudo apt upgrade -y
sudo apt autoremove
sudo apt autoclean

Atualizar a Versão do Ubuntu:

# Para atualização de LTS para LTS
sudo do-release-upgrade

# Para qualquer atualização de versão
sudo do-release-upgrade -d

Listando Pacotes

Listar Pacotes Instalados:

# Todos os pacotes instalados
apt list --installed

# Com filtro grep
apt list --installed | grep package-name

# Contar pacotes instalados
apt list --installed | wc -l

# Usando dpkg
dpkg -l
dpkg --list
dpkg -l | grep package-name

Listar Pacotes Atualizáveis:

# Mostrar pacotes com atualizações disponíveis
apt list --upgradable

# Simulação detalhada de atualização
apt list --upgradable -a

Listar Todos os Pacotes Disponíveis:

# Todos os pacotes nos repositórios
apt list

# Listar de um repositório específico
apt list | grep "source-name"

Buscando Pacotes

Buscar Nomes e Descrições de Pacotes:

# Buscar com apt
apt search keyword

# Busca insensível a maiúsculas e minúsculas
apt search -i keyword

# Mostrar apenas nomes de pacotes
apt-cache search keyword

# Buscar apenas nomes de pacotes (mais rápido)
apt-cache search --names-only keyword

Exemplos:

# Buscar editor
apt search editor de texto

# Buscar banco de dados
apt search banco de dados

# Buscar pacotes Python
apt search python | grep python3

Visualizando Informações de Pacotes

Informações Detalhadas de Pacotes:

# Mostrar detalhes do pacote
apt show package-name

# Usando apt-cache
apt-cache show package-name

# Mostrar dependências do pacote
apt-cache depends package-name

# Mostrar dependências reversas
apt-cache rdepends package-name

# Verificar política e versões do pacote
apt-cache policy package-name

# Mostrar estatísticas do pacote
apt-cache stats

Verificar se o Pacote Está Instalado:

# Método 1
dpkg -s package-name

# Método 2
dpkg -l package-name

# Método 3
apt list --installed package-name

# Método 4 (código de saída 0 se instalado)
dpkg-query -W package-name

Removendo Pacotes

Remover Pacotes:

# Remover pacote (manter arquivos de configuração)
sudo apt remove package-name

# Remover pacote e arquivos de configuração (purgar)
sudo apt purge package-name

# Remover com dependências
sudo apt autoremove package-name

# Remover completamente o pacote e configurações
sudo apt purge package-name && sudo apt autoremove

Limpeza do Sistema:

# Remover dependências não utilizadas
sudo apt autoremove

# Remover com purga
sudo apt autoremove --purge

# Excluir arquivos de pacotes baixados
sudo apt clean

# Excluir versões antigas de pacotes
sudo apt autoclean

Verificar Uso de Disco:

# Verificar tamanho do cache
du -sh /var/cache/apt/archives

# Verificar tamanho total dos pacotes
dpkg-query -Wf '${Installed-Size}\t${Package}\n' | sort -n

Bloqueio de Pacotes (Prevenir Atualizações)

Bloquear Pacotes:

# Bloquear pacote na versão atual
sudo apt-mark hold package-name

# Desbloquear pacote
sudo apt-mark unhold package-name

# Mostrar pacotes bloqueados
apt-mark showhold

# Bloquear múltiplos pacotes
sudo apt-mark hold package1 package2 package3

Caso de Uso: Impedir que versões específicas de software sejam atualizadas automaticamente.

Usando dpkg - Ferramenta de Pacotes de Nível Baixo

dpkg é o gerenciador de pacotes subjacente que o APT usa:

Comandos Básicos de dpkg:

# Instalar pacote
sudo dpkg -i package.deb

# Remover pacote
sudo dpkg -r package-name

# Purgar pacote
sudo dpkg -P package-name

# Listar pacotes instalados
dpkg -l

# Listar arquivos no pacote
dpkg -L package-name

# Encontrar qual pacote possui um arquivo
dpkg -S /path/to/file

# Verificar status do pacote
dpkg -s package-name

# Reconfigurar pacote
sudo dpkg-reconfigure package-name

# Verificar integridade do pacote
dpkg -V package-name

Corrigir Pacotes Quebrados:

# Reconfigurar pacotes quebrados
sudo dpkg --configure -a

# Corrigir dependências faltantes
sudo apt install -f

# Reinstalar forçado
sudo apt install --reinstall package-name

Gerenciamento de Repositórios

Visualizando Repositórios

Verificar Repositórios Configurados:

# Verificar lista de fontes
cat /etc/apt/sources.list

# Verificar fontes adicionais
ls /etc/apt/sources.list.d/

# Verificar todos os repositórios habilitados
grep -r --include '*.list' '^deb ' /etc/apt/

Adicionar Repositórios

Adicionar PPA (Personal Package Archive):

# Adicionar repositório PPA
sudo add-apt-repository ppa:user/ppa-name
sudo apt update

# Exemplo: Adicionar PPA do Git
sudo add-apt-repository ppa:git-core/ppa
sudo apt update
sudo apt install git

Adicionar Repositório Manualmente:

# Adicionar repositório à sources.list
echo "deb http://repository-url distribution component" | sudo tee -a /etc/apt/sources.list.d/custom.list

# Adicionar chave GPG
wget -qO - https://example.com/key.gpg | sudo apt-key add -

# Atualizar listas de pacotes
sudo apt update

Gerenciamento de Chaves Moderno (Ubuntu 22.04+):

# Baixar e adicionar chave ao keyring
wget -qO - https://example.com/key.gpg | sudo gpg --dearmor -o /etc/apt/keyrings/custom.gpg

# Adicionar repositório assinado
echo "deb [signed-by=/etc/apt/keyrings/custom.gpg] http://repo-url dist component" | sudo tee /etc/apt/sources.list.d/custom.list

Removendo Repositórios

# Remover PPA
sudo add-apt-repository --remove ppa:user/ppa-name

# Ou excluir o arquivo de lista
sudo rm /etc/apt/sources.list.d/ppa-name.list

# Atualizar
sudo apt update

Gerenciadores de Pacotes Alternativos

O Ubuntu também suporta Snap e Flatpak para empacotamento universal de aplicações:

  • Snap: Veja nossa guia abrangente sobre Gerenciador de Pacotes Snap para informações detalhadas sobre instalação, uso, canais, confinamento e solução de problemas.

  • Flatpak: Veja nossa guia abrangente sobre Gerenciador de Pacotes Flatpak para informações detalhadas sobre instalação, Flathub, permissões, runtimes e gerenciamento.

Gerenciamento de Pacotes Avançado

Simular Operações (Execução de Teste)

# Simular instalação
apt install -s package-name

# Simular atualização
apt upgrade -s

# Mostrar o que seria instalado
apt-cache showpkg package-name

Baixar Pacotes Sem Instalar

# Baixar apenas o pacote
apt download package-name

# Baixar com dependências
apt install --download-only package-name

# Baixar para diretório específico
cd /path/to/dir
apt download package-name

Encontrar Arquivos de Pacotes

# Qual pacote fornece um arquivo
dpkg -S /path/to/file

# Buscar arquivos em pacotes (incluindo não instalados)
apt-file search filename

# Instalar apt-file primeiro
sudo apt install apt-file
sudo apt-file update

Pinagem de Pacotes

Crie /etc/apt/preferences para controlar versões de pacotes:

# Pinar pacote para versão específica
sudo nano /etc/apt/preferences

Adicione:

Package: package-name
Pin: version 1.2.3*
Pin-Priority: 1001

Verificar Vulnerabilidades de Pacotes

# Verificar para atualizações de segurança
sudo apt list --upgradable | grep security

# Verificar pacote específico para CVEs
apt-cache policy package-name

Solução de Problemas Comuns

Corrigir Pacotes Quebrados

# Método 1: Corrigir dependências
sudo apt install -f

# Método 2: Reconfigurar pacotes
sudo dpkg --configure -a

# Método 3: Limpar e atualizar
sudo apt clean
sudo apt update
sudo apt upgrade

# Método 4: Corrigir forçado
sudo apt --fix-broken install

Corrigir “Banco de Dados Bloqueado”

# Remover arquivos de bloqueio (só se nenhum processo apt estiver em execução!)
sudo rm /var/lib/dpkg/lock-frontend
sudo rm /var/lib/dpkg/lock
sudo rm /var/cache/apt/archives/lock
sudo dpkg --configure -a

Verificar primeiramente processos em execução:

ps aux | grep -i apt
sudo lsof /var/lib/dpkg/lock-frontend

Erro de Hash Sum Mismatch

# Limpar cache e tentar novamente
sudo apt clean
sudo rm -rf /var/lib/apt/lists/*
sudo apt update

Erros de GPG/Chave

# Re-adicionar chave
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys KEY_ID

# Ou baixar chave
wget -qO - https://repo-url/key.gpg | sudo apt-key add -

# Abordagem moderna (Ubuntu 22.04+)
wget -qO - https://repo-url/key.gpg | sudo gpg --dearmor -o /etc/apt/keyrings/repo.gpg

Dependências Não Atendidas

# Tente aptitude (melhor resolutor de dependências)
sudo apt install aptitude
sudo aptitude install package-name

# Ou resolução manual
sudo apt install package-name package-dependency

Repositório Não Encontrado (404)

# Atualizar para o repositório correto
sudo nano /etc/apt/sources.list

# Alterar o nome da versão antiga para a atual
# Ou remover PPA obsoleto
sudo add-apt-repository --remove ppa:name/ppa

Boas Práticas

Manutenção Regular

Rotina Semanal:

#!/bin/bash
# Script de atualização do sistema

echo "Atualizando listas de pacotes..."
sudo apt update

echo "Atualizando pacotes..."
sudo apt upgrade -y

echo "Removendo pacotes não utilizados..."
sudo apt autoremove -y

echo "Limpeza do cache de pacotes..."
sudo apt autoclean

echo "Atualização completa!"

Atualizações de Segurança

Atualizações Automáticas para Correções de Segurança:

# Instalar unattended-upgrades
sudo apt install unattended-upgrades

# Configurar
sudo dpkg-reconfigure unattended-upgrades

# Editar configuração
sudo nano /etc/apt/apt.conf.d/50unattended-upgrades

Configuração de Servidor: Se você estiver gerenciando o Ubuntu Server, uma configuração de rede adequada é essencial para downloads confiáveis de pacotes e atualizações do sistema. Aprenda como alterar um endereço IP estático no Ubuntu Server para garantir conectividade estável para suas operações de gerenciamento de pacotes.

Backup da Lista de Pacotes

Exportar Pacotes Instalados:

# Criar backup
dpkg --get-selections > ~/package-list.txt

# Ou com pacotes instalados explicitamente
apt-mark showmanual > ~/manually-installed.txt

# Restaurar em outro sistema
sudo dpkg --set-selections < ~/package-list.txt
sudo apt-get dselect-upgrade

Verificar Saúde do Sistema

# Verificar dependências quebradas
sudo apt check

# Verificar todos os pacotes
sudo debsums -c

# Verificar logs do sistema
journalctl -xe | grep -i apt
tail -f /var/log/apt/history.log

Otimização de Desempenho

Downloads de Pacotes Mais Rápidos

Ativar Downloads Paralelos:

Edite /etc/apt/apt.conf.d/99parallel:

echo 'Acquire::Queue-Mode "host";' | sudo tee /etc/apt/apt.conf.d/99parallel
echo 'Acquire::http::Pipeline-Depth "5";' | sudo tee -a /etc/apt/apt.conf.d/99parallel

Usar o Espelho Mais Rápido:

# Instalar apt-fast
sudo add-apt-repository ppa:apt-fast/stable
sudo apt update
sudo apt install apt-fast

# Use apt-fast em vez de apt
sudo apt-fast install package-name

Reduzir Tamanho do Cache

# Limitar cache a 100MB
echo 'APT::Archives::MaxSize "100";' | sudo tee /etc/apt/apt.conf.d/99max-cache

Scripts Úteis de Gerenciamento de Pacotes

Atualizar Todos os Gerenciadores de Pacotes

#!/bin/bash
# Atualizar todos os gerenciadores de pacotes

echo "=== Atualização do APT ==="
sudo apt update && sudo apt upgrade -y

echo "=== Atualização do Snap ==="
sudo snap refresh

echo "=== Atualização do Flatpak ==="
flatpak update -y

echo "Todos os sistemas atualizados!"

Encontrar Pacotes Grandes

# Listar os pacotes instalados maiores
dpkg-query -Wf '${Installed-Size}\t${Package}\n' | sort -nr | head -20

# Ou formato mais legível
dpkg-query -Wf '${Installed-Size}\t${Package}\n' | sort -nr | head -20 | awk '{printf "%.2f MB\t%s\n", $1/1024, $2}'

Auditoria de Pacotes

#!/bin/bash
# Auditoria do sistema de pacotes

echo "=== Estatísticas do Sistema de Pacotes ==="
echo "Pacotes instalados: $(dpkg -l | grep ^ii | wc -l)"
echo "Pacotes atualizáveis: $(apt list --upgradable 2>/dev/null | grep -c upgradable)"
echo "Pacotes bloqueados: $(apt-mark showhold | wc -l)"
echo "Auto-removíveis: $(apt autoremove --dry-run | grep -Po '^\d+')"
echo "Tamanho do cache: $(du -sh /var/cache/apt/archives | cut -f1)"

Folha de Dicas Rápida

Comandos Essenciais:

# Atualizar & Atualizar
sudo apt update && sudo apt upgrade -y

# Instalar pacote
sudo apt install package-name

# Remover pacote
sudo apt remove package-name

# Buscar pacote
apt search keyword

# Mostrar informações do pacote
apt show package-name

# Listar instalados
apt list --installed

# Limpar sistema
sudo apt autoremove && sudo apt autoclean

# Corrigir pacotes quebrados
sudo apt install -f && sudo dpkg --configure -a

Conclusão

Mestrar o sistema de gerenciamento de pacotes do Ubuntu é essencial para uma administração de sistema eficiente. Seja usando o comando moderno apt para sessões interativas, apt-get para scripts ou explorando pacotes universais com Snap e Flatpak, compreender essas ferramentas ajudará você a manter um sistema Ubuntu seguro, atualizado e bem organizado.

Comece com os comandos básicos, gradualmente incorpore técnicas avançadas e sempre mantenha seu sistema atualizado. Manutenção regular, combinada com boas práticas, garante uma experiência Ubuntu suave e confiável.

Dica Profissional: Sempre execute sudo apt update antes de instalar ou atualizar pacotes para garantir que você esteja trabalhando com as informações mais recentes dos pacotes!

Artigos Relacionados Neste Site