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 -inã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".
- Esperar resolução de dependências do
dpkg -i: Instalar um.debcomdpkg -ipara comdependency problems. Para resolver dependências, useapt install ./pkg.deb. - Tentar ignorar erros de dependência com
rpm -e: Apagar algo de que outros pacotes dependem é recusado comFailed dependencies. Não force imprudentemente com--nodeps; deixar paradnf removeé mais seguro. - Esquecer
apt updateapós editarsources.list: Mesmo após adicionar ou alterar um repositório, novos pacotes não são encontrados até você atualizar os índices comapt update. - Confundir
apt updateeapt upgrade:updateapenas atualiza informações;upgraderealmente atualiza os pacotes. Não assuma que o sistema está atualizado apenas porque executouupdate. - Consultas rpm sem
-q: Esquecer-q, como emrpm bash, quando se pretende consultar, não dá o resultado esperado. Sempre escreva consultas comorpm -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 -inão resolvem dependências - [ ] 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 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.