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

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

O Que Voce Vai Conquistar

  • Explicar a divisao de papeis entre Debian (dpkg / apt) e RPM (rpm / yum / dnf)
  • Distinguir a diferenca de resolucao de dependencias entre ferramentas de baixo nivel (dpkg / rpm) e de alto nivel (apt / dnf)
  • Executar operacoes de instalacao, remocao, atualizacao, busca e consulta em ambas as familias
  • Consultar reversamente qual pacote possui um arquivo com dpkg -S / rpm -qf
  • Responder com raciocinio a pergunta frequente no exame "dpkg -i nao resolve dependencias"

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 unica peca.

Como Escolher Entre as Duas Familias e Quatro Ferramentas

As ferramentas de gerenciamento de pacotes se dividem em duas camadas: "baixo nivel" (operacoes de pacote unico, sem resolucao de dependencias) e "alto nivel" (com conhecimento de repositorio, resolucao automatica de dependencias). A regra pratica e usar ferramentas de alto nivel no dia a dia e reservar as de baixo nivel para consultas ou instalacao direta de um .deb/.rpm local.

Familia Baixo nivel (sem resolucao de dep) Alto nivel (resolve deps) Configuracao do repositorio
Debian dpkg apt / apt-get / apt-cache /etc/apt/sources.list(.d/)
RPM rpm yum / dnf /etc/yum.repos.d/

Uma dica de memorizacao: dpkg e rpm sao as ferramentas de baixo nivel que "tocam pacotes individuais diretamente". apt, yum e dnf sao as ferramentas de alto nivel que "cuidam de repositorios e dependencias". O exame frequentemente pergunta "qual resolve dependencias automaticamente".

Familia Debian: Trabalhando com dpkg

dpkg e a ferramenta de baixo nivel para sistemas Debian. Ela instala diretamente um arquivo .deb local e consulta pacotes instalados. Sua caracteristica definidora e que nao resolve dependencias.

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 dependencias necessarias estiverem faltando, ele para com dependency problems (veja Solucao de Problemas abaixo).

dpkg -r / -P: Remover

dpkg -r package
dpkg -P package

-r (--remove) remove o pacote mas mantem seus arquivos de configuracao; -P (--purge) remove incluindo os arquivos de configuracao. A distincao "manter vs. deletar config" e 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 direcoes opostas.

dpkg --configure: Configurar pacotes nao configurados

dpkg --configure -a

Configura pacotes que estao descompactados mas ainda nao configurados. -a direciona todos esses pacotes. Use para recuperar quando uma instalacao foi interrompida no meio.

Familia Debian: Trabalhando com apt / apt-get / apt-cache

A familia apt tem conhecimento de repositorio e resolve dependencias automaticamente. apt e para uso interativo diario, enquanto apt-get / apt-cache fornecem uma interface estavel 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 indices do repositorio; nao atualiza os pacotes em si. A atualizacao real e apt upgrade. Essa divisao de papeis e um ponto frequente no exame. apt install puxa automaticamente as dependencias faltantes (como libfoo1 acima).

apt remove / purge

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

apt remove e equivalente a dpkg -r (mantem config) e apt purge e equivalente a dpkg -P (deleta config). A distincao 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 descricao antes de instalar. show exibe metadados como versao, dependencias e descricao. apt search / apt show fazem a mesma coisa.

aptitude e outra ferramenta de alto nivel equivalente ao apt, com uma TUI interativa e resolucao avancada de dependencias. Para o LPIC-1, basta saber seu nome e papel (um frontend alternativo da familia apt).

Familia RPM: Trabalhando com rpm

rpm e a ferramenta de baixo nivel para sistemas RPM (familia Red Hat / Fedora / openSUSE). Como dpkg, lida com instalacao e consultas de pacote unico e nao resolve dependencias.

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) e uma instalacao limpa, -U (upgrade) atualiza um pacote existente ou instala se ausente, e -e (erase) remove. -v (verbose) e -h (mostrar progresso com marcas hash) sao comumente combinados.

A familia 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 direcoes opostas.

rpm -V: Verificar

rpm -V bash

Verifica se os arquivos foram modificados ou corrompidos apos a instalacao (tamanho, permissoes, MD5, etc.). Nenhuma saida significa nenhuma alteracao; caracteres como S (size) ou M (mode) indicam uma diferenca naquele atributo.

rpm2cpio package.rpm | cpio -idmv extrai arquivos de um .rpm sem instala-lo. E a forma padrao de resgatar um arquivo individual. Para o LPIC-1, basta saber de sua existencia e proposito.

Familia RPM: Trabalhando com yum / dnf

yum e seu sucessor dnf sao as ferramentas de alto nivel para sistemas RPM. Eles trabalham com repositorios (/etc/yum.repos.d/) e resolvem dependencias automaticamente. Seus conjuntos de comandos sao quase identicos, e dnf e o padrao em distribuicoes 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 dependencias faltantes (como libfoo acima). Escrever yum install faz a mesma coisa (em muitas distribuicoes yum e 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 esta instalado, e repolist para ver quais repositorios estao habilitados. A configuracao do repositorio em si fica em arquivos .repo dentro de /etc/yum.repos.d/.

Mapeamento Lado a Lado das Duas Familias

Mapear comandos Debian e RPM por operacao permite inferir uma familia a partir da outra. Organize em torno do fato de que a resolucao de dependencias e o limite entre baixo nivel e alto nivel.

Operacao Debian baixo nivel Debian alto nivel RPM baixo nivel RPM alto nivel
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
Resolucao auto de dep Nao Sim Nao Sim

Ferramentas de baixo nivel (dpkg / rpm) nao resolvem dependencias. Para instalar algo corretamente junto com suas dependencias, sempre use uma ferramenta de alto nivel (apt / dnf). Quando um .deb / .rpm local instalado diretamente encontra um erro de dependencia, mudar para o caminho de repositorio (como apt install ./pkg.deb) frequentemente resolve.

Erros Comuns

Cinco erros que se repetem tanto na pratica quanto no exame. Todos sao evitaveis quando se entende "a diferenca entre baixo nivel e alto nivel" e "a atualizacao em dois passos".

  1. Esperar resolucao de dependencias do dpkg -i: Instalar um .deb com dpkg -i para com dependency problems. Para resolver dependencias, use apt install ./pkg.deb.
  2. Tentar ignorar erros de dependencia com rpm -e: Apagar algo de que outros pacotes dependem e recusado com Failed dependencies. Nao force imprudentemente com --nodeps; deixar para dnf remove e mais seguro.
  3. Esquecer apt update apos editar sources.list: Mesmo apos adicionar ou alterar um repositorio, novos pacotes nao sao encontrados ate voce atualizar os indices com apt update.
  4. Confundir apt update e apt upgrade: update apenas atualiza informacoes; upgrade realmente atualiza os pacotes. Nao assuma que o sistema esta atualizado apenas porque executou update.
  5. Consultas rpm sem -q: Esquecer -q, como em rpm bash, quando se pretende consultar, nao da o resultado esperado. Sempre escreva consultas como rpm -q....

Solucao de Problemas

Sintoma: dpkg -i para com "dependency problems"

Causa: Como dpkg nao resolve dependencias, ele falha na etapa de configuracao quando pacotes necessarios nao estao instalados

Verificacao:

dpkg -i package.deb

Solucao: Deixe para uma ferramenta de alto nivel que puxa dependencias automaticamente.

apt install ./package.deb
apt -f install

apt install ./package.deb instala o .deb local com resolucao de dependencias. Se o sistema ja esta em estado quebrado, apt -f install (--fix-broken) preenche as dependencias faltantes.

Sintoma: rpm -e reporta "Failed dependencies"

Causa: Outro pacote depende do que voce esta tentando apagar

Verificacao:

rpm -e package
rpm -q --whatrequires package

Solucao: Use a ferramenta de alto nivel que lida com dependencias de forma segura.

dnf remove package

dnf remove remove pacotes de forma segura considerando dependencias. Evite remocao forcada com rpm -e --nodeps, que pode quebrar o sistema.

Sintoma: apt install nao encontra o pacote alvo

Causa: Os indices do repositorio estao desatualizados, ou voce nao os atualizou apos editar sources.list

Verificacao:

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

Solucao:

apt update
apt install package

Atualize os indices com apt update, depois instale novamente. Para o mesmo sintoma em sistemas RPM, verifique os repositorios habilitados com dnf repolist.

Lista de Verificacao de Conclusao

  • [ ] Consegue explicar os papeis das ferramentas de baixo nivel (dpkg / rpm) e alto nivel (apt / dnf)
  • [ ] Entende que dpkg -i / rpm -i nao resolvem dependencias
  • [ ] 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 configuracao do repositorio (/etc/apt/sources.list(.d/) / /etc/yum.repos.d/)

Resumo

Papel Debian RPM
Baixo nivel dpkg rpm
Alto nivel 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
Repositorio /etc/apt/sources.list(.d/) /etc/yum.repos.d/

Domine o gerenciamento de pacotes pelo contraste "baixo nivel para operacoes unitarias e consultas, alto nivel para uso diario com resolucao de dependencias", e voce consegue responder tanto o 102.4 quanto o 102.5 com fluencia. Em seguida, combine com sistemas de arquivos e localizacao de arquivos para solidificar a visao geral da administracao 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

Pratica