Alguém pode explicar para que serve a pasta /.rpmdb no diretório raiz? Qual aplicativo o cria e está usando?
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.
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 rpm
comando 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, rpm
está 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.
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 rpm
comando para consultar o banco de dados. Como expliquei anteriormente, isso silenciosamente criará um .rpmdb
diretó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/.rpmdb
diretó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 rpm
comandos 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.sh
script 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/.rpmdb
e os /root/.rpmdb
diretórios aparecem no seu sistema. Mas por que no diretório raiz do sistema?
A explicação mais fácil para isso é que a $HOME
variá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 rpm
comandos. 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-get
para instalar pacotes, ele herdará um correto $HOME
. Se você usa o PackageKit, ele pode não ter uma $HOME
variá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 $HOME
variável e, devido à maneira como o banco de dados rpm foi definido, um banco de dados rpm vazio será criado em /.rpmdb
vez de /root/.rpmdb
. Isso foi corrigido no rpm
pacote para Ubuntu na versão de desenvolvimento 14.10, portanto agora deve ser criado /root/.rpmdb
mesmo que $HOME
não esteja definido.
Espero que isso explique por que existem diretórios chamados .rpmdb
em 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.
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
/.rpmdb
que apareceria em um sistema Ubuntu (que não usa rpm)?alien