Administração de Sistemas

Gerenciamento de pacotes: apt, dnf, pacman e apk comparados

• 6 min de leitura

Gerenciamento de pacotes: apt, dnf, pacman e apk comparados
Os gerenciadores de pacotes são ferramentas essenciais para a manutenção de sistemas Linux, responsáveis por instalar, atualizar, remover e gerenciar softwares de forma organizada. Eles resolvem dependências automaticamente, garantem a integridade do sistema e simplificam a administração.

Gerenciamento de pacotes: apt, dnf, pacman e apk comparados

1. Introdução aos gerenciadores de pacotes no ecossistema Linux

Os gerenciadores de pacotes são ferramentas essenciais para a manutenção de sistemas Linux, responsáveis por instalar, atualizar, remover e gerenciar softwares de forma organizada. Eles resolvem dependências automaticamente, garantem a integridade do sistema e simplificam a administração.

Neste artigo, comparamos quatro gerenciadores amplamente utilizados:

  • apt (Advanced Package Tool) — usado em distribuições baseadas em Debian/Ubuntu, trabalha com pacotes .deb
  • dnf (Dandified YUM) — padrão no Fedora e RHEL, gerencia pacotes .rpm
  • pacman — gerenciador oficial do Arch Linux, utiliza pacotes .pkg.tar.zst (ou .pkg.tar.xz)
  • apk (Alpine Package Keeper) — presente no Alpine Linux, com pacotes .apk

Cada um possui filosofia, sintaxe e desempenho distintos, influenciando diretamente a experiência do usuário.

2. Comandos básicos de busca e instalação

Instalação de pacotes

# apt (Debian/Ubuntu)
sudo apt install nginx

# dnf (Fedora/RHEL)
sudo dnf install nginx

# pacman (Arch Linux)
sudo pacman -S nginx

# apk (Alpine Linux)
sudo apk add nginx

Busca de pacotes

# apt
apt search nginx

# dnf
dnf search nginx

# pacman
pacman -Ss nginx

# apk
apk search nginx

Todos os gerenciadores permitem instalar múltiplos pacotes de uma vez:

# apt
sudo apt install nginx php mysql-server

# dnf
sudo dnf install nginx php mysql-server

# pacman
sudo pacman -S nginx php mysql-server

# apk
sudo apk add nginx php mysql-server

A resolução de dependências é automática em todos os casos, mas o comportamento difere: apt e dnf são mais conservadores, enquanto pacman e apk tendem a ser mais diretos.

3. Atualização e remoção de pacotes

Atualização do sistema

# apt (atualiza lista e pacotes)
sudo apt update && sudo apt upgrade
# Para atualizações completas do sistema
sudo apt dist-upgrade

# dnf
sudo dnf upgrade

# pacman (atualiza lista e pacotes em um comando)
sudo pacman -Syu

# apk
sudo apk update && sudo apk upgrade

Remoção de pacotes

# apt (remove pacote e arquivos de configuração)
sudo apt remove --purge nginx

# dnf
sudo dnf remove nginx

# pacman (remove pacote, dependências órfãs e arquivos de configuração)
sudo pacman -Rns nginx

# apk
sudo apk del nginx

Limpeza de cache

# apt
sudo apt clean

# dnf
sudo dnf clean all

# pacman
sudo pacman -Sc

# apk
sudo apk cache clean

O pacman -Rns é particularmente útil por remover automaticamente dependências que não são mais necessárias, enquanto no apt é preciso usar apt autoremove separadamente.

4. Gerenciamento de repositórios e fontes

Cada gerenciador armazena suas fontes de pacotes em arquivos de configuração específicos:

# apt - /etc/apt/sources.list e /etc/apt/sources.list.d/
deb http://archive.ubuntu.com/ubuntu focal main universe

# dnf - /etc/yum.repos.d/
[fedora]
name=Fedora $releasever - $basearch
baseurl=http://mirror.example.com/fedora/releases/$releasever/Everything/$basearch/os/

# pacman - /etc/pacman.conf
[core]
Include = /etc/pacman.d/mirrorlist

# apk - /etc/apk/repositories
http://dl-cdn.alpinelinux.org/alpine/v3.18/main
http://dl-cdn.alpinelinux.org/alpine/v3.18/community

Para adicionar repositórios de terceiros, cada um tem seu método:

# apt (adicionar PPA)
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt update

# dnf (adicionar repositório RPM Fusion)
sudo dnf install https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm

# pacman (adicionar repositório AUR via /etc/pacman.conf)
[archlinuxfr]
Server = http://repo.archlinux.fr/$arch

# apk (editar /etc/apk/repositories diretamente)
echo "http://dl-cdn.alpinelinux.org/alpine/edge/testing" >> /etc/apk/repositories

A atualização da lista de pacotes disponíveis também varia:

# apt
sudo apt update

# dnf
sudo dnf makecache

# pacman
sudo pacman -Sy

# apk
sudo apk update

5. Informações sobre pacotes e dependências

Exibição de informações detalhadas

# apt
apt show nginx

# dnf
dnf info nginx

# pacman
pacman -Qi nginx

# apk
apk info nginx

Listagem de arquivos pertencentes a um pacote

# apt (usa dpkg)
dpkg -L nginx

# dnf (usa rpm)
rpm -ql nginx

# pacman
pacman -Ql nginx

# apk
apk info -L nginx

Verificação de dependências

# apt
apt depends nginx

# dnf
dnf deplist nginx

# pacman (dependências aparecem em pacman -Qi)
pacman -Qi nginx | grep "Depends On"

# apk
apk info -R nginx

6. Comparação de desempenho e formato de pacotes

Velocidade de instalação e resolução de dependências

Em testes práticos, pacman e apk são significativamente mais rápidos que apt e dnf. O apk se destaca em ambientes com recursos limitados, enquanto o pacman oferece excelente desempenho em sistemas desktop.

Tamanho dos pacotes e eficiência de compressão

  • .deb: usa compressão xz ou zstd, tamanho médio
  • .rpm: compressão xz ou zstd, geralmente maior que .deb
  • .pkg.tar.zst: usa zstd, excelente taxa de compressão e velocidade
  • .apk: usa gzip, pacotes muito leves e rápidos de extrair

Estrutura de banco de dados local

# apt - /var/lib/dpkg/
/var/lib/dpkg/status
/var/lib/dpkg/info/

# dnf - /var/lib/rpm/
/var/lib/rpm/Packages
/var/lib/rpm/Name

# pacman - /var/lib/pacman/
/var/lib/pacman/local/
/var/lib/pacman/sync/

# apk - /lib/apk/db/
/lib/apk/db/installed
/lib/apk/db/scripts.tar

O banco de dados do pacman é mais simples e rápido de consultar, enquanto o dpkg mantém um formato de texto legível.

7. Casos de uso e recomendações práticas

Quando preferir apt

  • Sistemas estáveis como servidores Ubuntu/Debian
  • Grande base de pacotes disponível
  • Ampla documentação e comunidade
  • Ideal para quem prioriza estabilidade sobre novidades

Quando usar dnf

  • Ambientes corporativos que exigem compatibilidade com RHEL
  • Sistemas que precisam de certificações de segurança
  • Fedora para quem deseja tecnologias recentes com estabilidade razoável

Vantagens do pacman

  • Rolling release com atualizações contínuas
  • Simplicidade e velocidade excepcionais
  • AUR (Arch User Repository) para pacotes da comunidade
  • Ideal para entusiastas e desenvolvedores

Cenários ideais para apk

  • Containers Docker (imagens Alpine são muito leves)
  • Sistemas embarcados e IoT
  • Ambientes com recursos limitados de armazenamento e memória

Dicas de migração entre gerenciadores

# Script para listar pacotes instalados no apt e instalar no pacman
apt list --installed | grep -v "Listing..." | cut -d/ -f1 > pacotes.txt
# Adaptar nomes e instalar com pacman -S

# Script para migrar de dnf para apt
dnf list installed | tail -n +2 | awk '{print $1}' > pacotes.txt
# Converter nomes e usar apt install

Referências

💬 Comentários
Mais em Administração de Sistemas