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 -inao 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".
- Esperar resolucao de dependencias do
dpkg -i: Instalar um.debcomdpkg -ipara comdependency problems. Para resolver dependencias, useapt install ./pkg.deb. - Tentar ignorar erros de dependencia com
rpm -e: Apagar algo de que outros pacotes dependem e recusado comFailed dependencies. Nao force imprudentemente com--nodeps; deixar paradnf removee mais seguro. - Esquecer
apt updateapos editarsources.list: Mesmo apos adicionar ou alterar um repositorio, novos pacotes nao sao encontrados ate voce atualizar os indices comapt update. - Confundir
apt updateeapt upgrade:updateapenas atualiza informacoes;upgraderealmente atualiza os pacotes. Nao assuma que o sistema esta atualizado apenas porque executouupdate. - Consultas rpm sem
-q: Esquecer-q, como emrpm bash, quando se pretende consultar, nao da o resultado esperado. Sempre escreva consultas comorpm -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 -inao resolvem dependencias - [ ] Consegue distinguir
apt updatedeapt 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.