Administração de Linux Question #019e3987
Qual comando RPM retornará o nome do pacote que forneceu o arquivo /etc/exports?
rpm -F /etc/exports
rpm -qf /etc/exports
rpm -Kl /etc/exports
rpm -qp /etc/exports
rpm -qi /etc/exports
Official Explanation / Community Explanations
Resumo
A pergunta pede qual comando RPM identifica o pacote que forneceu um arquivo específico, /etc/exports. O RPM (Red Hat Package Manager) mantém um banco de dados dos pacotes instalados e seus arquivos. A opção -qf consulta o banco de dados para descobrir qual pacote forneceu um determinado arquivo. Esta é uma tarefa comum para administradores de sistema ao solucionar problemas ou auditar a propriedade de pacotes.
Como funciona
O RPM armazena metadados sobre pacotes instalados em um banco de dados local, geralmente em /var/lib/rpm/. Esse banco de dados inclui uma lista de todos os arquivos instalados por cada pacote, junto com checksums, permissões e timestamps. Quando você executa rpm -qf /caminho/para/arquivo, o RPM pesquisa no banco de dados o pacote que instalou aquele caminho de arquivo exato. Ele usa o caminho absoluto do arquivo para corresponder à lista de arquivos de cada pacote. A consulta retorna o nome do pacote (e versão) se encontrado, ou uma mensagem de erro se o arquivo não pertencer a nenhum pacote instalado.
Por que a resposta correta está certa
A opção B (rpm -qf /etc/exports) está correta. A flag -q significa consulta (query), e -f (ou --file) especifica que o argumento é um caminho de arquivo. Juntos, -qf instrui o RPM a consultar o pacote que possui o arquivo fornecido. Executar este comando produzirá algo como nfs-utils-1.3.3-12.el7.x86_64 (dependendo do sistema), indicando que o arquivo /etc/exports foi instalado pelo pacote nfs-utils.
Por que as outras opções estão incorretas
- A (
rpm -F /etc/exports): A opção-Fé usada para atualizar pacotes (freshen) — atualiza apenas se uma versão mais antiga estiver instalada. Ela não consulta o banco de dados; espera arquivos de pacote como argumentos, não um caminho de arquivo. Isso falharia ou não faria nada. - C (
rpm -Kl /etc/exports): A opção-Ké para verificar assinaturas (ex.: GPG) de um arquivo de pacote.-lé para listar arquivos em um pacote. Combinados,-Klé inválido;-Kespera um arquivo de pacote, não um caminho de arquivo do sistema. Isso produziria um erro. - D (
rpm -qp /etc/exports):-qé consulta,-pindica consultar um arquivo de pacote não instalado (um arquivo.rpm). O argumento deve ser um arquivo de pacote, não um arquivo do sistema. Isso falharia porque/etc/exportsnão é um arquivo de pacote. - E (
rpm -qi /etc/exports):-qé consulta,-ié para informações do pacote (nome, versão, descrição, etc.). Isso espera um nome de pacote como argumento, não um caminho de arquivo. Executar isso tentaria consultar um pacote chamado/etc/exports, que não existe, resultando em erro.