Skip to content

Referência Completa: DNF, APT e APK

Guia de referência para os gerenciadores de pacotes DNF (Fedora, RHEL, CentOS), APT (Debian, Ubuntu, Mint) e APK (Alpine Linux).

PROPÓSITO

Traduzir a mesma operação entre os três gerenciadores de pacote, sem precisar reaprender a sintaxe a cada distribuição.

Quando usar: Ao operar ambientes mistos — Fedora/RHEL, Debian/Ubuntu e Alpine — ou ao escrever scripts que precisam rodar em mais de uma família.

Pré-requisitos: Nenhum. É material de consulta.


0. Referência Rápida — Equivalências

OperaçãoDNFAPTAPK
Instalardnf installapt installapk add
Removerdnf removeapt remove / apt purgeapk del
Atualizar metadadosdnf makecacheapt updateapk update
Atualizar tudodnf upgradeapt upgradeapk upgrade
Buscardnf searchapt searchapk search
Info do pacotednf infoapt showapk info -a
Versões disponíveisdnf --showduplicates listapt-cache policyapk list
Dependências diretasdnf deplistapt-cache dependsapk info -R
Dependentes reversosdnf repoquery --whatrequiresapt-cache rdependsapk info -r
Arquivos do pacotednf repoquery --listdpkg -Lapk info -L
A qual pacote pertencednf providesdpkg -Sapk info -W
Listar instaladosdnf list installedapt list --installedapk list --installed
Limpar cachednf clean allapt cleanapk cache clean
Remover órfãosdnf autoremoveapt autoremoveapk autoremove
Históricodnf history/var/log/apt/history.log/var/log/apk.log
Repositóriosdnf repolistapt-cache policy/etc/apk/repositories
Verificar integridaderpm -Vdpkg --verifyapk verify
Corrigir pacotesdnf distro-syncapt install -fapk fix

1. Instalação de Pacotes

AçãoDNFAPTAPK
Instalar pacotesudo dnf install <pacote>sudo apt install <pacote>apk add <pacote>
Instalar sem confirmaçãosudo dnf install -y <pacote>sudo apt install -y <pacote>apk add <pacote>(sem prompt por padrão)
Instalar múltiplos pacotessudo dnf install pkg1 pkg2 pkg3sudo apt install pkg1 pkg2 pkg3apk add pkg1 pkg2 pkg3
Instalar arquivo localsudo dnf install ./pacote.rpmsudo apt install ./pacote.debapk add --allow-untrusted pacote.apk
Reinstalar pacotesudo dnf reinstall <pacote>sudo apt install --reinstall <pacote>apk add --force-reinstall <pacote>
Instalar versão específicasudo dnf install pacote-1.2.3sudo apt install pacote=1.2.3apk add pacote=1.2.3
Instalar sem dependências(não recomendado)sudo dpkg -iapk add --no-deps <pacote>
Instalar somente dependênciasapk add --virtual <alias> dep1 dep2

2. Remoção de Pacotes

AçãoDNFAPTAPK
Remover pacotesudo dnf remove <pacote>sudo apt remove <pacote>apk del <pacote>
Remover + configs(remove configs por padrão)sudo apt purge <pacote>apk del --purge <pacote>
Remover dependências órfãssudo dnf autoremovesudo apt autoremoveapk autoremove
Remover + órfãs em uma etapasudo dnf remove <pacote> --setopt=clean_requirements_on_remove=Truesudo apt purge <pacote> && sudo apt autoremoveapk del --purge <pacote> && apk autoremove

3. Atualização de Pacotes

AçãoDNFAPTAPK
Atualizar lista de repositóriossudo dnf check-updatesudo apt updateapk update
Atualizar todos os pacotessudo dnf upgradesudo apt upgradeapk upgrade
Atualizar + remover obsoletossudo dnf distro-syncsudo apt full-upgradeapk upgrade --available
Atualizar pacote específicosudo dnf upgrade <pacote>sudo apt install --only-upgrade <pacote>apk upgrade <pacote>
Atualizar forçando refreshsudo dnf upgrade --refreshsudo apt update && sudo apt upgradeapk update && apk upgrade
Ver pacotes com atualizaçãosudo dnf check-updateapt list --upgradableapk version -l '<'
Simular atualização (dry-run)sudo dnf upgrade --assumenosudo apt upgrade --simulateapk upgrade --simulate

4. Busca de Pacotes

AçãoDNFAPTAPK
Buscar por nomednf search <termo>apt search <termo>apk search <termo>
Busca exata no nomednf search <pacote>apt-cache search ^<pacote>$apk search -e <pacote>
Buscar por arquivo/comandodnf provides <arquivo>apt-file search <arquivo>apk search <arquivo>
Buscar por caminhodnf provides /usr/bin/vimapt-file search /usr/bin/vimapk search /usr/bin/vim
Buscar por bibliotecadnf provides libssl.so*apt-file search libssl.soapk search libssl
Buscar com descriçãodnf search --all <termo>apt search <termo>apk search -d <termo>

5. Informações de Pacotes

Ver informações gerais

AçãoDNFAPTAPK
Info do pacote (repositório)dnf info <pacote>apt show <pacote>apk info <pacote>
Info do pacote instaladodnf info installed <pacote>apt show <pacote>apk info -a <pacote>
Ver versão instaladadnf list installed <pacote>dpkg -l <pacote>apk list --installed <pacote>
Ver versão disponíveldnf info <pacote>apt-cache policy <pacote>apk info <pacote>
Ver candidato à instalaçãodnf info <pacote>apt-cache policy <pacote>apk search -e <pacote>
Ver changelogdnf changelog <pacote>apt changelog <pacote>(não suportado nativamente)
Ver tamanho do pacotednf info <pacote>apt show <pacote>apk info -s <pacote>

Ver versões disponíveis

bash
# DNF — todas as versões disponíveis nos repositórios
dnf --showduplicates list <pacote>

# APT — versões disponíveis e candidato
apt-cache policy <pacote>

# APT — todas as versões (incluindo backports, etc.)
apt-cache madison <pacote>

# APK — versões disponíveis
apk search -e <pacote>
apk list <pacote>

6. Listagem de Pacotes

AçãoDNFAPTAPK
Listar todos instaladosdnf list installedapt list --installedapk list --installed
Listar disponíveis nos reposdnf list availableapt listapk list --available
Listar com atualização pendentednf list updatesapt list --upgradableapk list --upgradable
Listar pacotes extrasdnf list extras(sem equivalente direto)(sem equivalente direto)
Listar pacotes obsoletosdnf list obsoletes(sem equivalente direto)(sem equivalente direto)
Contar pacotes instaladosdnf list installed | wc -ldpkg -l | grep '^ii' | wc -lapk list --installed | wc -l

7. Dependências

Ver dependências de um pacote

bash
# DNF
dnf deplist <pacote>
dnf repoquery --requires <pacote>
dnf repoquery --requires --resolve <pacote>   # resolve nomes dos pacotes

# APT
apt-cache depends <pacote>
apt-cache showdep <pacote>

# APK
apk info --depends <pacote>
apk info -R <pacote>                          # shorthand para --depends

Ver dependências recursivas (árvore completa)

bash
# DNF
dnf repoquery --requires --recursive <pacote>

# APT (requer apt-rdepends)
sudo apt install apt-rdepends
apt-rdepends <pacote>

# APK
apk info --depends <pacote>                   # diretas
# para árvore recursiva, use:
apk dot <pacote> | dot -Tpng > tree.png       # requer graphviz

Ver o que depende de um pacote (dependentes reversos)

bash
# DNF
dnf repoquery --whatrequires <pacote>

# APT
apt-cache rdepends <pacote>
apt-cache rdepends --installed <pacote>       # só os instalados

# APK
apk info --rdepends <pacote>
apk info -r <pacote>                          # shorthand para --rdepends

Ver arquivos que um pacote instala

bash
# DNF
dnf repoquery --list <pacote>
rpm -ql <pacote>                              # se já instalado

# APT
dpkg -L <pacote>                              # se instalado
apt-file list <pacote>                        # mesmo sem instalar (requer apt-file)

# APK
apk info --contents <pacote>
apk info -L <pacote>                          # shorthand para --contents

Descobrir a qual pacote um arquivo pertence

bash
# DNF
dnf provides /caminho/do/arquivo
rpm -qf /caminho/do/arquivo                   # se o arquivo já está no sistema

# APT
dpkg -S /caminho/do/arquivo                   # se instalado
apt-file search /caminho/do/arquivo           # no repositório

# APK
apk info --who-owns /caminho/do/arquivo
apk info -W /caminho/do/arquivo               # shorthand para --who-owns

8. Repositórios e Arquivos de Configuração

AçãoDNFAPTAPK
Listar repositórios ativosdnf repolistapt-cache policycat /etc/apk/repositories
Listar todos (ativos + inativos)dnf repolist allcat /etc/apt/sources.list.d/*.listcat /etc/apk/repositories
Adicionar repositóriosudo dnf config-manager --add-repo <url>sudo add-apt-repository <ppa>echo "<url>" >> /etc/apk/repositories
Habilitar repositóriosudo dnf config-manager --set-enabled <id>(editar sources.list)(descomentar linha em /etc/apk/repositories)
Desabilitar repositóriosudo dnf config-manager --set-disabled <id>(editar sources.list)(comentar linha em /etc/apk/repositories)
Atualizar metadadossudo dnf makecachesudo apt updateapk update

DNF — Arquivos de Configuração

Arquivo principal: /etc/dnf/dnf.conf

Configuração global do DNF. Exemplo comentado:

ini
[main]
gpgcheck=1                  # verifica assinaturas GPG (recomendado: 1)
installonly_limit=3         # quantas versões do kernel manter
clean_requirements_on_remove=True  # remove deps ao desinstalar
best=True                   # exige a melhor versão disponível
skip_if_unavailable=False   # falha se algum repo estiver inacessível
fastestmirror=True          # escolhe o mirror mais rápido (dnf-plugins-core)
max_parallel_downloads=5    # downloads simultâneos
keepcache=0                 # 0 = limpa cache após instalar; 1 = mantém

Arquivos de repositório: /etc/yum.repos.d/*.repo

Cada repositório é um arquivo .repo nesse diretório. Exemplo completo:

ini
[fedora]
name=Fedora $releasever - $basearch
baseurl=https://download.fedoraproject.org/pub/fedora/linux/releases/$releasever/Everything/$basearch/os/
#metalink=https://mirrors.fedoraproject.org/metalink?repo=fedora-$releasever&arch=$basearch
enabled=1                   # 1 = ativo, 0 = desabilitado
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$releasever-$basearch
skip_if_unavailable=False
metadata_expire=7d          # validade do cache de metadados
priority=1                  # menor número = maior prioridade

Variáveis disponíveis nos .repo:

VariávelValor
$releaseverversão do sistema (ex: 40)
$basearcharquitetura (ex: x86_64)
$archarquitetura completa (ex: x86_64)

Gerenciar repositórios via linha de comando

bash
# Adicionar repo a partir de URL de arquivo .repo
sudo dnf config-manager --add-repo https://exemplo.com/repo.repo

# Habilitar/desabilitar por ID
sudo dnf config-manager --set-enabled fedora-updates
sudo dnf config-manager --set-disabled fedora-updates

# Instalar repo via pacote RPM (ex: EPEL no RHEL/CentOS)
sudo dnf install epel-release

# Adicionar chave GPG manualmente
sudo rpm --import https://exemplo.com/chave.gpg

# Listar repos com URLs
dnf repolist -v

# Ver de qual repo um pacote viria
dnf info <pacote>

Repositórios comuns no Fedora/RHEL

bash
# EPEL (Extra Packages for Enterprise Linux) — para RHEL/CentOS
sudo dnf install epel-release

# RPM Fusion (codecs, drivers proprietários) — para Fedora
sudo dnf install \
  https://mirrors.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm \
  https://mirrors.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm

# Remover um repo (deletar o arquivo .repo)
sudo rm /etc/yum.repos.d/repo-indesejado.repo

APT — Arquivos de Configuração

Arquivo principal: /etc/apt/apt.conf e /etc/apt/apt.conf.d/

Configuração global do APT. O diretório apt.conf.d/ contém fragmentos individuais:

bash
# Ver configuração ativa consolidada
apt-config dump

# Arquivos comuns em /etc/apt/apt.conf.d/
ls /etc/apt/apt.conf.d/
# 01autoremove       10periodic         50unattended-upgrades

Exemplo de /etc/apt/apt.conf.d/99local:

bash
// Manter pacotes baixados no cache
Binary::apt::APT::Keep-Downloaded-Packages "true";

// Não instalar pacotes recomendados automaticamente
APT::Install-Recommends "false";

// Não instalar pacotes sugeridos
APT::Install-Suggests "false";

// Timeout de download em segundos
Acquire::http::Timeout "30";

// Número de tentativas em caso de falha
Acquire::Retries "3";

Arquivo de fontes: /etc/apt/sources.list

Formato clássico (uma linha por fonte):

bash
# sintaxe: deb [opções] <uri> <suite> <componentes>

deb http://archive.ubuntu.com/ubuntu noble main restricted
deb http://archive.ubuntu.com/ubuntu noble-updates main restricted
deb http://archive.ubuntu.com/ubuntu noble universe multiverse
deb http://security.ubuntu.com/ubuntu noble-security main restricted

# linha comentada = repositório desabilitado
# deb http://archive.ubuntu.com/ubuntu noble-backports main restricted

Novo formato DEB822: /etc/apt/sources.list.d/*.sources

Formato moderno (Ubuntu 24.04+, Debian 12+):

bash
Types: deb
URIs: http://archive.ubuntu.com/ubuntu
Suites: noble noble-updates noble-backports
Components: main restricted universe multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg

Arquivos individuais: /etc/apt/sources.list.d/

Cada repositório externo geralmente cria um arquivo próprio nesse diretório:

bash
# Ver todos os arquivos de sources
ls /etc/apt/sources.list.d/

# Conteúdo típico de um repo externo (ex: Google Chrome)
# /etc/apt/sources.list.d/google-chrome.list
deb [arch=amd64 signed-by=/usr/share/keyrings/google-chrome.gpg] \
    https://dl.google.com/linux/chrome/deb/ stable main

Gerenciar repositórios via linha de comando

bash
# Adicionar PPA (Ubuntu)
sudo add-apt-repository ppa:usuario/nome-ppa

# Remover PPA
sudo add-apt-repository --remove ppa:usuario/nome-ppa

# Adicionar repo externo manualmente (método moderno com keyring)
# 1. Baixar e salvar a chave GPG
curl -fsSL https://exemplo.com/chave.gpg | \
    sudo gpg --dearmor -o /usr/share/keyrings/nome-repo.gpg

# 2. Adicionar o repositório referenciando a chave
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/nome-repo.gpg] \
    https://exemplo.com/repo stable main" | \
    sudo tee /etc/apt/sources.list.d/nome-repo.list

# 3. Atualizar e instalar
sudo apt update

# Desabilitar um repositório sem remover (comentar no arquivo)
sudo sed -i 's/^deb /# deb /' /etc/apt/sources.list.d/nome-repo.list

# Remover repositório completamente
sudo rm /etc/apt/sources.list.d/nome-repo.list
sudo rm /usr/share/keyrings/nome-repo.gpg

# Listar chaves GPG instaladas (método moderno)
ls /usr/share/keyrings/

# Listar chaves (método antigo, legado)
sudo apt-key list

Componentes do Ubuntu/Debian

ComponenteDescrição
mainSoftware livre suportado oficialmente
restrictedDrivers proprietários suportados
universeSoftware livre mantido pela comunidade
multiverseSoftware com restrições de licença
backportsVersões mais novas portadas para a release estável

Pinning — controlar prioridade de repositórios

Arquivo /etc/apt/preferences.d/99prioridades:

bash
# Preferir pacotes do repositório "stable" em vez de "backports"
Package: *
Pin: release a=stable
Pin-Priority: 900

# Instalar versão específica de um pacote de backports
Package: firefox
Pin: release a=noble-backports
Pin-Priority: 950
text
# Ver prioridades atuais
apt-cache policy
apt-cache policy <pacote>

APK — Arquivos de Configuração

Arquivo de repositórios: /etc/apk/repositories

Arquivo de texto simples, uma URL por linha. Linha com # = comentada/desabilitada:

bash
# Repositórios oficiais do Alpine Linux v3.19
https://dl-cdn.alpinelinux.org/alpine/v3.19/main
https://dl-cdn.alpinelinux.org/alpine/v3.19/community

# Edge (rolling release) — desabilitado por padrão
#https://dl-cdn.alpinelinux.org/alpine/edge/main
#https://dl-cdn.alpinelinux.org/alpine/edge/community
#https://dl-cdn.alpinelinux.org/alpine/edge/testing

Gerenciar repositórios via linha de comando

bash
# Adicionar repositório
echo "https://dl-cdn.alpinelinux.org/alpine/v3.19/community" \
    >> /etc/apk/repositories

# Habilitar repositório (descomentar linha)
sed -i 's|^#https://dl-cdn.alpinelinux.org/alpine/edge/testing|\
https://dl-cdn.alpinelinux.org/alpine/edge/testing|' \
    /etc/apk/repositories

# Desabilitar repositório (comentar linha)
sed -i 's|^https://dl-cdn.alpinelinux.org/alpine/edge/testing|\
#https://dl-cdn.alpinelinux.org/alpine/edge/testing|' \
    /etc/apk/repositories

# Atualizar índices após alterar
apk update

Branches do Alpine

BranchDescrição
vX.Y/mainPacotes essenciais, suporte LTS oficial
vX.Y/communityPacotes mantidos pela comunidade, estáveis
edge/mainVersões mais recentes, sem suporte garantido
edge/communityComunidade no rolling release
edge/testingPacotes experimentais, podem quebrar

Arquivo de chaves GPG: /etc/apk/keys/

O Alpine verifica assinaturas dos índices com chaves .pub nesse diretório:

bash
# Ver chaves instaladas
ls /etc/apk/keys/

# Adicionar chave de repositório externo
wget -P /etc/apk/keys/ https://exemplo.com/chave.pub

# Instalar sem verificação de chave (não recomendado, apenas em dev/docker)
apk add --allow-untrusted <pacote>
apk fetch --allow-untrusted <pacote>

Arquivo de mundo: /etc/apk/world

Lista os pacotes instalados manualmente (sem incluir dependências). É o "estado desejado" do sistema:

bash
# Ver conteúdo
cat /etc/apk/world

# Usar para reproduzir o ambiente em outra máquina
cat /etc/apk/world | xargs apk add

# Editar diretamente e sincronizar (avançado)
echo "vim" >> /etc/apk/world
apk upgrade --available   # aplica o world

Configuração global: /etc/apk/conf (não existe por padrão)

O APK não tem um apk.conf formal. Opções globais são passadas em flags ou via scripts de inicialização. Em Dockerfiles, o padrão é:

bash
RUN apk update && apk add --no-cache <pacotes>
# --no-cache evita salvar o índice em disco, reduz tamanho da imagem

9. Cache e Limpeza

AçãoDNFAPTAPK
Limpar cache de pacotessudo dnf clean packagessudo apt cleanapk cache clean
Limpar metadadossudo dnf clean metadatasudo apt cleanrm -rf /var/cache/apk/*
Limpar tudosudo dnf clean allsudo apt clean && sudo apt autocleanapk cache clean && rm -rf /var/cache/apk/*
Remover pacotes desnecessáriossudo dnf autoremovesudo apt autoremoveapk autoremove
Ver tamanho do cachedu -sh /var/cache/dnfdu -sh /var/cache/aptdu -sh /var/cache/apk
Habilitar cache local(ativado por padrão)(ativado por padrão)setup-apkcache /var/cache/apk

10. Histórico de Transações

bash
# DNF — ver histórico completo
dnf history

# DNF — detalhes de uma transação específica
dnf history info <id>

# DNF — desfazer última transação
sudo dnf history undo last

# DNF — desfazer transação por ID
sudo dnf history undo <id>

# DNF — refazer transação por ID
sudo dnf history redo <id>

# APT — histórico de instalações
cat /var/log/apt/history.log

# APT — log detalhado de operações
cat /var/log/dpkg.log

# APT — ver todos os pacotes instalados manualmente
apt-mark showmanual

# APK — histórico (log do sistema)
cat /var/log/apk.log

# APK — ver o mundo atual (pacotes instalados manualmente)
cat /etc/apk/world

Nota APK: o arquivo /etc/apk/world é o equivalente ao "mundo" do APK — lista apenas os pacotes instalados manualmente (não as dependências). Muito útil para reproduzir ambientes.


11. Grupos de Pacotes e Virtuais

bash
# DNF — listar grupos disponíveis
dnf group list

# DNF — info sobre um grupo
dnf group info "Development Tools"

# DNF — instalar grupo
sudo dnf group install "Development Tools"

# DNF — remover grupo
sudo dnf group remove "Development Tools"

# APT — equivalente com tasksel
sudo apt install tasksel
sudo tasksel

# APT — instalar meta-pacotes (equivalente a grupos)
sudo apt install build-essential

# APK — pacotes virtuais (agrupar dependências temporárias)
apk add --virtual .build-deps gcc musl-dev make
# ... compilar algo ...
apk del .build-deps    # remove tudo de uma vez pelo alias

O recurso --virtual do APK é muito usado em Dockerfiles para instalar dependências de build e removê-las depois, mantendo a imagem pequena.


12. Operações de Baixo Nível

AçãoRPM (DNF)DPKG (APT)APK direto
Instalar pacote localsudo rpm -ivh pacote.rpmsudo dpkg -i pacote.debapk add --allow-untrusted pacote.apk
Remover por nomesudo rpm -e <pacote>sudo dpkg -r <pacote>apk del <pacote>
Listar arquivos do pacoterpm -ql <pacote>dpkg -L <pacote>apk info -L <pacote>
Verificar integridaderpm -V <pacote>dpkg --verify <pacote>apk verify <pacote>
Info do pacote instaladorpm -qi <pacote>dpkg -s <pacote>apk info -a <pacote>
Listar todos instaladosrpm -qadpkg -lapk list --installed
A qual pacote pertence arquivorpm -qf /arquivodpkg -S /arquivoapk info -W /arquivo

13. Resolução de Problemas

bash
# DNF — verificar e corrigir dependências quebradas
sudo dnf check
sudo dnf distro-sync

# DNF — forçar atualização do cache
sudo dnf makecache --refresh

# DNF — reiniciar o PackageKit (quando travado)
sudo systemctl restart packagekit

# DNF — remover lock travado
sudo rm -f /var/cache/dnf/*.lock
sudo rm -f /var/lib/rpm/.rpm.lock

# APT — corrigir dependências quebradas
sudo apt install -f
sudo dpkg --configure -a

# APT — forçar reconfiguração de pacote
sudo dpkg-reconfigure <pacote>

# APT — verificar pacotes com problemas
sudo apt check

# APK — verificar e corrigir integridade do banco de dados
apk verify
apk fix

# APK — forçar reinstalação de todos os pacotes instalados
apk fix --reinstall

# APK — verificar consistência de dependências
apk audit

# APK — corrigir pacotes corrompidos
apk fix --depends <pacote>

14. Recursos Específicos do APK

Pacotes virtuais (.virtual)

bash
# Agrupar dependências com um alias descartável
apk add --virtual .deps-compilacao gcc g++ make musl-dev

# Compilar o projeto...

# Remover todas as dependências de uma vez
apk del .deps-compilacao

Fixar versão de um pacote

bash
# Fixar versão (pinning) — impede atualização
apk add <pacote>=1.2.3-r0

# Fixar em uma versão mínima
apk add '<pacote>>=1.2.0'

Verificar arquivos modificados

bash
# Ver arquivos de pacotes que foram alterados
apk audit --system

# Ver arquivos novos (não pertencem a nenhum pacote)
apk audit --backup

Suporte a múltiplas arquiteturas e root alternativos

bash
# Instalar pacotes em um diretório alternativo (ex: chroot)
apk add --root /mnt/alpine --initdb <pacote>

# Instalar para arquitetura diferente
apk add --arch x86 <pacote>

_DNF: Fedora, RHEL 8+, CentOS Stream, AlmaLinux, Rocky LinuxAPT: Debian, Ubuntu, Linux Mint, Pop!OS, Kali LinuxAPK: Alpine Linux