Gerenciamento de Pacotes - dpkg/apt e rpm/yum/dnf

Gerenciamento de Pacotes - dpkg/apt e rpm/yum/dnf

O Que Você Vai Conquistar

  • Explicar a divisão de papéis entre Debian (dpkg / apt) e RPM (rpm / yum / dnf)
  • Distinguir a diferença de resolução de dependências entre ferramentas de baixo nível (dpkg / rpm) e de alto nível (apt / dnf)
  • Executar operações de instalação, remoção, atualização, busca e consulta em ambas as famílias
  • Consultar reversamente qual pacote possui um arquivo com dpkg -S / rpm -qf
  • Responder com raciocínio a pergunta frequente no exame "dpkg -i não resolve dependências"

Este artigo cobre tanto o objetivo 102.4 do LPIC-1 "Usar gerenciamento de pacotes Debian" quanto o 102.5 "Usar gerenciamento de pacotes RPM e YUM" em uma única peça.

Como Escolher Entre as Duas Famílias e Quatro Ferramentas

As ferramentas de gerenciamento de pacotes se dividem em duas camadas: "baixo nível" (operações de pacote único, sem resolução de dependências) e "alto nível" (com conhecimento de repositório, resolução automática de dependências). A regra prática é usar ferramentas de alto nível no dia a dia e reservar as de baixo nível para consultas ou instalação direta de um .deb/.rpm local.

Família Baixo nível (sem resolução de dep) Alto nível (resolve deps) Configuração do repositório
Debian dpkg apt / apt-get / apt-cache /etc/apt/sources.list(.d/)
RPM rpm yum / dnf /etc/yum.repos.d/

Uma dica de memorização: dpkg e rpm são as ferramentas de baixo nível que "tocam pacotes individuais diretamente". apt, yum e dnf são as ferramentas de alto nível que "cuidam de repositórios e dependências". O exame frequentemente pergunta "qual resolve dependências automaticamente".

Família Debian: Trabalhando com dpkg

dpkg é a ferramenta de baixo nível para sistemas Debian. Ela instala diretamente um arquivo .deb local e consulta pacotes instalados. Sua característica definidora é que não resolve dependências.

dpkg -i: Instalar um .deb diretamente

dpkg -i package_1.0_amd64.deb
Selecting previously unselected package package.
(Reading database ... 180000 files and directories currently installed.)
Preparing to unpack package_1.0_amd64.deb ...
Unpacking package (1.0) ...
Setting up package (1.0) ...

-i (--install) descompacta e configura o .deb. Se dependências necessárias estiverem faltando, ele para com dependency problems (veja Solução de Problemas abaixo).

dpkg -r / -P: Remover

dpkg -r package
dpkg -P package

-r (--remove) remove o pacote mas mantém seus arquivos de configuração; -P (--purge) remove incluindo os arquivos de configuração. A distinção "manter vs. deletar config" é testada no exame.

dpkg -l / -L / -S: Consultar

dpkg -l                  # Listar pacotes instalados
dpkg -L package          # Listar arquivos colocados por um pacote
dpkg -S /usr/bin/which   # Consulta reversa de qual pacote possui um arquivo
debianutils: /usr/bin/which

-l (list) lista pacotes instalados, -L (list files) lista "os arquivos que um pacote colocou", e -S (search) faz a consulta reversa "a qual pacote este arquivo pertence". Note que -L e -S apontam em direções opostas.

dpkg --configure: Configurar pacotes não configurados

dpkg --configure -a

Configura pacotes que estão descompactados mas ainda não configurados. -a direciona todos esses pacotes. Use para recuperar quando uma instalação foi interrompida no meio.

Família Debian: Trabalhando com apt / apt-get / apt-cache

A família apt tem conhecimento de repositório e resolve dependências automaticamente. apt é para uso interativo diário, enquanto apt-get / apt-cache fornecem uma interface estável para scripts.

apt update / install / upgrade

apt update                 # Atualizar informacoes de pacotes (indices)
apt install package        # Instalar com resolucao de dependencias
apt upgrade                # Atualizar todos os pacotes atualizaveis
Reading package lists... Done
Building dependency tree... Done
The following additional packages will be installed:
  libfoo1 libbar2
...

apt update apenas busca os índices do repositório; não atualiza os pacotes em si. A atualização real é apt upgrade. Essa divisão de papéis é um ponto frequente no exame. apt install puxa automaticamente as dependências faltantes (como libfoo1 acima).

apt remove / purge

apt remove package         # Remover mas manter configuracao
apt purge package          # Remover incluindo configuracao

apt remove é equivalente a dpkg -r (mantém config) e apt purge é equivalente a dpkg -P (deleta config). A distinção espelha o dpkg.

apt-cache search / show (apt search / show)

apt-cache search keyword   # Buscar pacotes por palavra-chave
apt-cache show package     # Mostrar informacoes detalhadas do pacote
nginx - small, powerful, scalable web/proxy server
nginx-core - nginx web/proxy server (standard version)

search encontra um pacote alvo por nome ou descrição antes de instalar. show exibe metadados como versão, dependências e descrição. apt search / apt show fazem a mesma coisa.

aptitude é outra ferramenta de alto nível equivalente ao apt, com uma TUI interativa e resolução avançada de dependências. Para o LPIC-1, basta saber seu nome e papel (um frontend alternativo da família apt).

Família RPM: Trabalhando com rpm

rpm é a ferramenta de baixo nível para sistemas RPM (família Red Hat / Fedora / openSUSE). Como dpkg, lida com instalação e consultas de pacote único e não resolve dependências.

rpm -i / -U / -e: Instalar, atualizar, apagar

rpm -ivh package-1.0.x86_64.rpm    # Instalacao limpa
rpm -Uvh package-2.0.x86_64.rpm    # Atualizar (ou instalar se ausente)
rpm -e package                     # Apagar (remover)

-i (install) é uma instalação limpa, -U (upgrade) atualiza um pacote existente ou instala se ausente, e -e (erase) remove. -v (verbose) e -h (mostrar progresso com marcas hash) são comumente combinados.

A família rpm -q: Consultar

rpm -qa                  # Todos os pacotes instalados
rpm -qi bash             # Informacoes detalhadas de um pacote
rpm -ql bash             # Listar arquivos colocados por um pacote
rpm -qf /bin/bash        # Consulta reversa de qual pacote possui um arquivo
bash-5.1.8-9.el9.x86_64

Consultas sempre usam -q (query): -qa (listar todos), -qi (info), -ql (listar arquivos), -qf (consulta reversa de arquivo). -ql e -qf correspondem ao -L / -S do dpkg e igualmente apontam em direções opostas.

rpm -V: Verificar

rpm -V bash

Verifica se os arquivos foram modificados ou corrompidos após a instalação (tamanho, permissões, MD5, etc.). Nenhuma saída significa nenhuma alteração; caracteres como S (size) ou M (mode) indicam uma diferença naquele atributo.

rpm2cpio package.rpm | cpio -idmv extrai arquivos de um .rpm sem instalá-lo. É a forma padrão de resgatar um arquivo individual. Para o LPIC-1, basta saber de sua existência e propósito.

Família RPM: Trabalhando com yum / dnf

yum e seu sucessor dnf são as ferramentas de alto nível para sistemas RPM. Eles trabalham com repositórios (/etc/yum.repos.d/) e resolvem dependências automaticamente. Seus conjuntos de comandos são quase idênticos, e dnf é o padrão em distribuições mais novas.

dnf install / remove / update

dnf install package        # Instalar com resolucao de dependencias
dnf remove package         # Remover
dnf update                 # Atualizar todos os pacotes atualizaveis
Dependencies resolved.
================================================================
 Package        Arch      Version        Repository     Size
================================================================
Installing:
 package        x86_64    1.0-1.el9      appstream      120 k
Installing dependencies:
 libfoo         x86_64    2.3-4.el9      baseos          45 k
...

dnf install puxa automaticamente as dependências faltantes (como libfoo acima). Escrever yum install faz a mesma coisa (em muitas distribuições yum é um link para dnf).

dnf search / info / list / repolist

dnf search keyword         # Buscar pacotes por palavra-chave
dnf info package           # Informacoes detalhadas do pacote
dnf list installed         # Listar pacotes instalados
dnf repolist               # Listar repositorios habilitados
repo id              repo name
baseos               Rocky Linux 9 - BaseOS
appstream            Rocky Linux 9 - AppStream

Use search para encontrar, info para inspecionar detalhes, list installed para verificar o que está instalado, e repolist para ver quais repositórios estão habilitados. A configuração do repositório em si fica em arquivos .repo dentro de /etc/yum.repos.d/.

Mapeamento Lado a Lado das Duas Famílias

Mapear comandos Debian e RPM por operação permite inferir uma família a partir da outra. Organize em torno do fato de que a resolução de dependências é o limite entre baixo nível e alto nível.

Operação Debian baixo nível Debian alto nível RPM baixo nível RPM alto nível
Instalar dpkg -i apt install rpm -i dnf install
Atualizar dpkg -i apt upgrade rpm -U dnf update
Remover dpkg -r apt remove rpm -e dnf remove
Purgar (incl. config) dpkg -P apt purge rpm -e dnf remove
Buscar apt-cache search dnf search
Info detalhada apt-cache show rpm -qi dnf info
Listar todos os pacotes dpkg -l rpm -qa dnf list
Listar arquivos do pacote dpkg -L rpm -ql
Arquivo para pacote dpkg -S rpm -qf
Resolução auto de dep Não Sim Não Sim

Ferramentas de baixo nível (dpkg / rpm) não resolvem dependências. Para instalar algo corretamente junto com suas dependências, sempre use uma ferramenta de alto nível (apt / dnf). Quando um .deb / .rpm local instalado diretamente encontra um erro de dependência, mudar para o caminho de repositório (como apt install ./pkg.deb) frequentemente resolve.

Erros Comuns

Cinco erros que se repetem tanto na prática quanto no exame. Todos são evitáveis quando se entende "a diferença entre baixo nível e alto nível" e "a atualização em dois passos".

  1. Esperar resolução de dependências do dpkg -i: Instalar um .deb com dpkg -i para com dependency problems. Para resolver dependências, use apt install ./pkg.deb.
  2. Tentar ignorar erros de dependência com rpm -e: Apagar algo de que outros pacotes dependem é recusado com Failed dependencies. Não force imprudentemente com --nodeps; deixar para dnf remove é mais seguro.
  3. Esquecer apt update após editar sources.list: Mesmo após adicionar ou alterar um repositório, novos pacotes não são encontrados até você atualizar os índices com apt update.
  4. Confundir apt update e apt upgrade: update apenas atualiza informações; upgrade realmente atualiza os pacotes. Não assuma que o sistema está atualizado apenas porque executou update.
  5. Consultas rpm sem -q: Esquecer -q, como em rpm bash, quando se pretende consultar, não dá o resultado esperado. Sempre escreva consultas como rpm -q....

Solução de Problemas

Sintoma: dpkg -i para com "dependency problems"

Causa: Como dpkg não resolve dependências, ele falha na etapa de configuração quando pacotes necessários não estão instalados

Verificação:

dpkg -i package.deb

Solução: Deixe para uma ferramenta de alto nível que puxa dependências automaticamente.

apt install ./package.deb
apt -f install

apt install ./package.deb instala o .deb local com resolução de dependências. Se o sistema já está em estado quebrado, apt -f install (--fix-broken) preenche as dependências faltantes.

Sintoma: rpm -e reporta "Failed dependencies"

Causa: Outro pacote depende do que você está tentando apagar

Verificação:

rpm -e package
rpm -q --whatrequires package

Solução: Use a ferramenta de alto nível que lida com dependências de forma segura.

dnf remove package

dnf remove remove pacotes de forma segura considerando dependências. Evite remoção forçada com rpm -e --nodeps, que pode quebrar o sistema.

Sintoma: apt install não encontra o pacote alvo

Causa: Os índices do repositório estão desatualizados, ou você não os atualizou após editar sources.list

Verificação:

cat /etc/apt/sources.list
ls /etc/apt/sources.list.d/

Solução:

apt update
apt install package

Atualize os índices com apt update, depois instale novamente. Para o mesmo sintoma em sistemas RPM, verifique os repositórios habilitados com dnf repolist.

Lista de Verificação de Conclusão

  • [ ] Consegue explicar os papéis das ferramentas de baixo nível (dpkg / rpm) e alto nível (apt / dnf)
  • [ ] Entende que dpkg -i / rpm -i não resolvem dependências
  • [ ] Consegue distinguir apt update de apt upgrade
  • [ ] Consegue fazer consulta reversa de um pacote a partir de um arquivo com dpkg -S / rpm -qf
  • [ ] Sabe onde fica a configuração do repositório (/etc/apt/sources.list(.d/) / /etc/yum.repos.d/)

Resumo

Papel Debian RPM
Baixo nível dpkg rpm
Alto nível apt / apt-get / apt-cache yum / dnf
Instalar apt install dnf install
Remover apt remove / apt purge dnf remove
Busca arq. dpkg -S rpm -qf
Repositório /etc/apt/sources.list(.d/) /etc/yum.repos.d/

Domine o gerenciamento de pacotes pelo contraste "baixo nível para operações unitárias e consultas, alto nível para uso diário com resolução de dependências", e você consegue responder tanto o 102.4 quanto o 102.5 com fluência. Em seguida, combine com sistemas de arquivos e localização de arquivos para solidificar a visão geral da administração de sistemas.

Continue Sua Jornada LPIC-1

Hub LPIC-1

  • Hub de Aprendizado LPIC-1 — Mapa completo de artigos LPIC-1, acompanhamento de progresso e cobertura dos objetivos do exame

Artigos Relacionados do LPIC-1

Prática