Comparação de Gerenciadores de Pacotes: apt, dnf, pacman, zypper

Comparação de Gerenciadores de Pacotes: apt, dnf, pacman, zypper

O que é um gerenciador de pacotes?

Conclusão: Um gerenciador de pacotes instala, atualiza, remove e resolve dependências de software. As distros o nomeiam de forma diferente — apt, dnf, pacman, zypper — mas o trabalho é o mesmo.

No Linux você não precisa caçar instaladores individuais como no Windows. Um gerenciador de pacotes busca o pacote alvo de um repositório central e resolve automaticamente suas dependências (as outras bibliotecas que ele precisa).

O objetivo deste guia é colocar os quatro principais gerenciadores de pacotes em um só mapa. Os nomes dos comandos diferem, mas o padrão de operações é compartilhado: atualizar o índice, instalar, buscar, remover. Aprenda o padrão e você não se perderá em uma distro que nunca tocou.

Para quem é este guia

  • Usuários intermediários que trabalham com múltiplas distros
  • Pessoas confortáveis com apt mas presas no dnf ou pacman
  • Qualquer um enfrentando diferenças de distro em um Dockerfile ou migração de servidor

Por que cada distribuição é diferente?

Conclusão: O formato do pacote (.deb, .rpm, etc.) e a filosofia de design que o gerencia diferem por família de distro. As principais famílias são Debian, Red Hat, Arch e SUSE.

Historicamente cada distro evoluiu seu próprio gerenciamento de pacotes. Como resultado, o formato e as ferramentas se dividiram ao longo das linhas de família.

Família Distros representativas Formato Ferramenta alto nível Ferramenta baixo nível
Debian Debian / Ubuntu .deb apt dpkg
Red Hat Fedora / RHEL / Rocky .rpm dnf rpm
Arch Arch / Manjaro .pkg.tar.zst pacman pacman
SUSE openSUSE / SLE .rpm zypper rpm

A "ferramenta de alto nível" lida com busca em repositório e resolução de dependências; a "ferramenta de baixo nível" desempacota e registra um único arquivo de pacote. Você geralmente interage com o lado de alto nível, mas o relacionamento é abordado abaixo.

O mapa do apt (família Debian / Ubuntu)

Conclusão: apt é a ferramenta de alto nível mais amplamente usada. O padrão básico é sudo apt update para atualizar o índice, então sudo apt install <pacote>.

Usado no Debian, Ubuntu e seus derivados. apt é o front-end interativo que unifica o mais antigo apt-get / apt-cache.

# Atualizar o índice (lista de pacotes)
$ sudo apt update

# Atualizar todos os pacotes instalados
$ sudo apt upgrade

# Instalar um pacote
$ sudo apt install nginx

# Remover (manter arquivos de configuração)
$ sudo apt remove nginx

# Remover incluindo arquivos de configuração
$ sudo apt purge nginx

# Buscar / mostrar informações
$ apt search keyword
$ apt show nginx

apt update (atualizar o índice) e apt upgrade (atualizar pacotes) são coisas diferentes. update sozinho não muda nada no disco. Sempre execute update antes de uma nova instalação.

O mapa do dnf (família Fedora / RHEL)

Conclusão: dnf é a ferramenta padrão da família Red Hat e o sucessor do yum. Ao contrário do apt, ele atualiza os metadados automaticamente quando você executa um comando.

Usado no Fedora, RHEL 8+, Rocky Linux e AlmaLinux. O comando yum geralmente permanece como um alias para dnf.

# Atualizar o sistema inteiro (busca de metadados é automática)
$ sudo dnf upgrade

# Apenas verificar o que pode ser atualizado
$ dnf check-update

# Instalar um pacote
$ sudo dnf install nginx

# Remover
$ sudo dnf remove nginx

# Buscar / mostrar informações
$ dnf search keyword
$ dnf info nginx

Sem comando explícito de atualização de índice como o apt precisa. Quando você executa dnf install / dnf upgrade, metadados desatualizados são atualizados automaticamente.

O mapa do pacman (família Arch)

Conclusão: pacman é controlado por letras de opção curtas. Os blocos de construção são -S (sync = instalar), -R (remover), -Q (consultar), -y (atualizar DB) e -u (upgrade).

Usado no Arch Linux e Manjaro. Rápido assim que você pega o jeito, mas as opções simbólicas confundem os iniciantes no começo.

# Sincronizar o DB de pacotes e atualizar totalmente o sistema (mais comum)
$ sudo pacman -Syu

# Instalar um pacote
$ sudo pacman -S nginx

# Remover (também remover dependências agora desnecessárias)
$ sudo pacman -Rs nginx

# Buscar (remoto) / mostrar informações (remoto)
$ pacman -Ss keyword
$ pacman -Si nginx

# Listar pacotes instalados
$ pacman -Q

O Arch é rolling release. Atualizações parciais são desencorajadas: mesmo antes de instalar um único pacote, sincronize o sistema inteiro com pacman -Syu. Quebrar a consistência torna o sistema fácil de corromper.

O mapa do zypper (família openSUSE)

Conclusão: zypper é a ferramenta padrão do openSUSE / SLE. Seu fluxo — refresh (atualizar índice), depois install / update — é próximo ao apt. Cada subcomando tem uma forma abreviada.

Usado no openSUSE Leap / Tumbleweed e SUSE Linux Enterprise. O formato é .rpm, mas a ferramenta é de uma linhagem diferente do dnf.

# Atualizar o índice de repositório
$ sudo zypper refresh

# Atualizar pacotes instalados
$ sudo zypper update

# Instalar um pacote (forma abreviada: in)
$ sudo zypper install nginx

# Remover (forma abreviada: rm)
$ sudo zypper remove nginx

# Buscar (forma abreviada: se) / mostrar informações
$ zypper search keyword
$ zypper info nginx

No Tumbleweed de rolling release, atualize o sistema inteiro com sudo zypper dup (atualização de distribuição) em vez de um simples update. No Leap (lançamento fixo), update é adequado.

A tabela de comparação dos quatro comandos

Conclusão: Alinhe as ferramentas por operação (atualizar, instalar, remover, buscar) e você pode trabalhar em qualquer distro desconhecida apenas lendo a tabela. Este é o mapa no coração deste guia.

Tarefa apt dnf pacman zypper
Atualizar índice apt update (automático) pacman -Sy zypper refresh
Atualizar sistema apt upgrade dnf upgrade pacman -Syu zypper update
Instalar pacote apt install <pkg> dnf install <pkg> pacman -S <pkg> zypper install <pkg>
Remover pacote apt remove <pkg> dnf remove <pkg> pacman -R <pkg> zypper remove <pkg>
Buscar apt search <word> dnf search <word> pacman -Ss <word> zypper search <word>
Mostrar informações apt show <pkg> dnf info <pkg> pacman -Si <pkg> zypper info <pkg>
Listar instalados apt list --installed dnf list --installed pacman -Q zypper search -i

Como lembrar: coloque as quatro ações — atualizar, instalar, remover, buscar — no eixo vertical e as distros no eixo horizontal. Quando você entrar em um novo ambiente, basta ler uma coluna desta tabela.

Como dpkg / rpm se relacionam com tudo isso?

Conclusão: dpkg / rpm são ferramentas de baixo nível que operam diretamente em um único arquivo de pacote. Elas não resolvem dependências, então use uma ferramenta de alto nível (apt / dnf, etc.) quando quiser que as dependências sejam tratadas automaticamente.

Use uma ferramenta de baixo nível quando quiser instalar um .deb / .rpm baixado diretamente.

# Instalar um .deb diretamente (não resolve dependências)
$ sudo dpkg -i package.deb

# Instalar um .rpm diretamente (não resolve dependências)
$ sudo rpm -i package.rpm

Como ferramentas de baixo nível pulam a resolução de dependências, dpkg -i pode deixar você com dependências ausentes. Corrija-as com sudo apt install -f. Usar a ferramenta de alto nível é o padrão seguro.

Como escolher e migrar?

Conclusão: Você não realmente "escolhe" — a distro decide por você. Ao migrar, traduza os comandos via a tabela, e além disso preste atenção em atualizações parciais em distros rolling (Arch / Tumbleweed).

Os pontos práticos de decisão:

  • Operações de servidor: Ubuntu (apt) e a família RHEL (dnf) dominam. Se você escreve Dockerfiles, aprenda a sintaxe install de ambos.
  • Desktop / ponta: Arch (pacman) ou Fedora (dnf). Acostume-se com a disciplina do pacman -Syu.
  • Corporativo: a família SUSE (zypper). Atenção à diferença entre zypper dup e update.
  • Ao migrar: os comandos mapeiam 1:1 via a tabela de comparação. As duas coisas que pegam as pessoas são "a atualização do índice é automática ou manual" e "rolling ou lançamento fixo".

Primeiro passo: identifique sua família de distro (a tabela em por que cada uma difere) e memorize apenas aquela coluna de comandos. Consulte as outras famílias na tabela de comparação quando realmente precisar.

Resumo / Próximas leituras