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
aptmas presas nodnfoupacman - 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 updatepara atualizar o índice, entãosudo 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 doyum. Ao contrário doapt, 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), depoisinstall/update— é próximo aoapt. 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/rpmsã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 sintaxeinstallde ambos. - Desktop / ponta: Arch (
pacman) ou Fedora (dnf). Acostume-se com a disciplina dopacman -Syu. - Corporativo: a família SUSE (
zypper). Atenção à diferença entrezypper dupeupdate. - 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.