Pasta desconhecida na raiz do sistema /.rpmdb

16

Alguém pode explicar para que serve a pasta /.rpmdb no diretório raiz? Qual aplicativo o cria e está usando?

BSimulj
fonte

Respostas:

11

Não posso dizer definitivamente o que cria esse diretório, mas é provável que ele seja criado como um efeito colateral da instalação de drivers de kernel Linux de terceiros, como NVIDIA ou VirtualBox usando DKMS , ou por algum outro script de instalador não suportado, não fornecido por Ubuntu. Esse diretório provavelmente foi criado como um efeito colateral de um processo de instalação que suporta distribuições baseadas em rpm e deb. O DKMS é um script de instalação e pode definitivamente criar esse diretório nas condições corretas. O diretório pode ser excluído com segurança sem danificar o sistema, mas pode ser criado novamente quando as atualizações forem instaladas posteriormente. Veja o bug nº 1069350 para obter um relatório de bug aberto que rastreia esse problema.

Essa é a resposta curta, agora mais alguns detalhes.

O que é .rpmdb?

Como você deve saber, rpm é um formato de pacote de software e um conjunto de ferramentas para instalar pacotes e manter o banco de dados de pacotes instalados e suas interdependências. É usado por muitas distribuições, mas não pelo Ubuntu e outras distribuições baseadas em deb. Infelizmente para o Ubuntu, no entanto, qualquer uso do rpmcomando requer que um banco de dados "rpmdb" válido exista ou seja criado.

Nas distribuições baseadas em rpm, isso não é um problema, porque elas têm um rpmdb em todo o sistema, por definição. Nos sistemas Ubuntu, como não há necessidade de um banco de dados rpm para todo o sistema, rpmestá configurado para usar um banco de dados no diretório inicial de cada usuário, especificamente $HOME/.rpmdb. Esse banco de dados é criado silenciosamente, conforme necessário, sempre que rpmé executado. Como está no diretório inicial de cada usuário, não há problemas com permissões compartilhadas ou exigindo que o banco de dados seja criado por um administrador. Todo usuário apenas obtém seu próprio banco de dados privado de rpm vazio.

Por que o rpm seria executado no Ubuntu?

Acontece que alguns projetos gostam de criar scripts de instalação que funcionem em qualquer distribuição, seja ela baseada em rpm, baseada em deb ou nenhuma. O DKMS é um desses projetos, permite que drivers de terceiros sejam construídos para qualquer kernel do Linux que um sistema esteja executando e foi escrito para funcionar em distribuições. Em parte de sua lógica para determinar em qual distribuição está sendo executada e em qual versão do kernel está presente, ele executa um rpmcomando para consultar o banco de dados. Como expliquei anteriormente, isso silenciosamente criará um .rpmdbdiretório, se ainda não existir no diretório inicial do usuário atual. A consulta ao banco de dados deve falhar, pois o Ubuntu não é uma distribuição baseada em rpm e o DKMS continua.

Se você instalar qualquer pacote de driver de kernel Linux adicional do Ubuntu, como VirtualBox, NVIDIA, ndiswrapper ou openswan, provavelmente está usando o DKMS para instalar esses drivers para o kernel. Isso geralmente é feito automaticamente quando o driver é instalado nos repositórios do Ubuntu. Portanto, sempre que uma atualização de kernel ou driver é instalada, o DKMS é executado novamente para reconstruir o driver para todas as versões disponíveis do kernel. Foi demonstrado que, quando esses pacotes são atualizados, o /root/.rpmdbdiretório realmente aparece, que está no diretório inicial do root, pois o root é necessário para instalar as atualizações.

Não conheço outros scripts de instalação específicos de terceiros que também possam executar rpmcomandos como uma maneira de detectar o tipo de distribuição, mas certamente é possível. Por exemplo, convém instalar o LargeProprietaryProgram da Initech e, para isso, execute um install.shscript como raiz. Esse script pode tentar consultar um banco de dados rpm para ver se você está executando uma distribuição baseada em rpm e /root/.rpmdbé criado novamente.

Isso explica por que você pode ver /home/user/.rpmdbe os /root/.rpmdbdiretórios aparecem no seu sistema. Mas por que no diretório raiz do sistema?

Por que o .rpmdb é criado no diretório raiz?

A explicação mais fácil para isso é que a $HOMEvariável de ambiente está desabilitada de alguma forma em algum contexto de processo executado rpm. Vamos usar o DKMS por uma questão de argumento, porque sabemos que ele pode executar rpmcomandos. Como normalmente é executado quando os pacotes são instalados ou atualizados, ele é executado no ambiente de qualquer gerenciador de pacotes que você usar. Se você usar sudo apt-getpara instalar pacotes, ele herdará um correto $HOME. Se você usa o PackageKit, ele pode não ter uma $HOMEvariável. Não tenho certeza de qual ambiente é fornecido pelo Synaptic ou Ubuntu Software Center.

Portanto, se o DKMS estiver em execução em um ambiente que não possui uma $HOMEvariável e, devido à maneira como o banco de dados rpm foi definido, um banco de dados rpm vazio será criado em /.rpmdbvez de /root/.rpmdb. Isso foi corrigido no rpmpacote para Ubuntu na versão de desenvolvimento 14.10, portanto agora deve ser criado /root/.rpmdbmesmo que $HOMEnão esteja definido.

Espero que isso explique por que existem diretórios chamados .rpmdbem um sistema Ubuntu, por que eles podem ser criados aparentemente automaticamente e por que um pode ser criado no diretório raiz sob o conjunto certo de condições. Não há com que se preocupar, não há nada malicioso na existência desse diretório e ele pode ser excluído se sua presença for ofensiva à estética ou aos scanners de segurança.

Mike Miller
fonte
-1

O RPM (Red Hat Package Manager) é um sistema de gerenciamento de pacotes. O RPM foi originalmente escrito em 1997 por Erik Troan e Marc Ewing para uso no Red Hat Linux, mas agora é usado em muitas distribuições GNU / Linux.

Trabalhando nos bastidores do gerenciador de pacotes está o banco de dados RPM ( RPMDB ), armazenado em /var/lib/rpm. Consiste em um único banco de dados (Pacotes) contendo todas as meta informações dos rpms instalados . O banco de dados é usado para acompanhar todos os arquivos que são alterados e criados quando um usuário (usando o RPM) instala um pacote , permitindo ao usuário (via RPM) reverter as alterações e remover o pacote posteriormente.


Referência: http://en.wikipedia.org/wiki/RPM_Package_Manager

Lucio
fonte
4
Como isso é relevante para explicar por /.rpmdbque apareceria em um sistema Ubuntu (que não usa rpm)?
Gilles 'SO- stop be evil'
11
talvez usadoalien
jet