Eu não posso dizer definitivamente o que cria esse diretório, mas é provável que ele seja criado como um efeito colateral de instalar drivers de kernel do Linux de terceiros, como NVIDIA ou VirtualBox, usando DKMS , ou por algum outro script de instalação não suportado não fornecido pelo Ubuntu. Provavelmente, esse diretório foi criado como um efeito colateral de um processo de instalação que suporta distribuições baseadas em rpm e baseadas em deb. O DKMS é um script de instalação e pode definitivamente criar esse diretório sob as condições corretas. O diretório pode ser excluído com segurança sem prejudicar o sistema, mas pode ser criado novamente quando as atualizações forem instaladas posteriormente. Consulte o bug # 1069350 para obter um relatório de erros aberto que rastreie esse problema.
Essa é a resposta curta, agora com mais detalhes.
O que é o .rpmdb?
Como você deve saber, o rpm é um formato de empacotamento 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 comando rpm
requer que exista ou seja criado um banco de dados "rpmdb" válido.
Em 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, uma vez que não há necessidade de um banco de dados rpm para todo o sistema, rpm
está configurado para usar um banco de dados sob o diretório pessoal 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 que o banco de dados seja criado por um administrador. Cada usuário apenas obtém seu próprio banco de dados rpm vazio.
Por que o rpm seria rodado no Ubuntu?
Acontece que alguns projetos gostam de criar scripts de instalação que funcionem em qualquer distribuição, seja essa distribuição baseada em rpm, baseada em deb ou nenhum dos dois. O DKMS é um desses projetos, ele permite que drivers de terceiros sejam construídos para qualquer kernel do Linux que um sistema esteja rodando, e é escrito para funcionar através de distribuições. Em parte de sua lógica para determinar em qual distribuição ele está sendo executado e qual versão do kernel está presente, ele executa um comando rpm
para consultar o banco de dados. Como expliquei anteriormente, isso criará silenciosamente um diretório .rpmdb
se ainda não existir um no diretório inicial do usuário atual. A consulta do 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 adicional de drivers de kernel do Linux, como o VirtualBox, NVIDIA, ndiswrapper ou openswan, provavelmente você está usando o DKMS para instalar esses drivers para o seu kernel. Isso geralmente é feito automaticamente quando o driver é instalado a partir dos repositórios do Ubuntu. Assim, sempre que uma atualização de kernel ou driver é instalada, o DKMS é executado novamente para reconstruir o driver para todas as versões de kernel disponíveis. Foi demonstrado que, quando esses pacotes são atualizados, o diretório /root/.rpmdb
aparece, na verdade, no diretório inicial do root, já que o root é necessário para instalar as atualizações.
Eu não sei de nenhum outro script de instalação específico de terceiros que também possa executar rpm
comandos como uma forma de detectar o tipo de distribuição, mas certamente é possível. Por exemplo, talvez você queira instalar o LargeProprietaryProgram da Initech e, para isso, execute um script install.sh
como root. 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 os diretórios /home/user/.rpmdb
e /root/.rpmdb
aparecerem em 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 variável de ambiente $HOME
não está definida de alguma forma em algum contexto de processo que executa rpm
. Vamos usar o DKMS por causa do argumento porque definitivamente sabemos que ele pode executar comandos rpm
. Como normalmente é executado quando pacotes são instalados ou atualizados, ele é executado no ambiente de qualquer gerenciador de pacotes que você use. Se você usar sudo apt-get
para instalar pacotes, ele herdará um $HOME
correto. Se você usar o PackageKit, ele pode não ter uma variável $HOME
. Não tenho certeza de qual ambiente é fornecido pelo Synaptic ou pelo Ubuntu Software Center.
Portanto, se o DKMS estiver sendo executado em um ambiente que não tenha uma variável $HOME
e devido à maneira como o banco de dados rpm foi definido, um banco de dados rpm vazio será criado em /.rpmdb
em vez de /root/.rpmdb
. Isso foi corrigido no pacote rpm
para o Ubuntu na versão de desenvolvimento 14.10, portanto, deve criar /root/.rpmdb
mesmo se $HOME
não estiver 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 deles pode ser criado no diretório raiz sob o conjunto correto de condições. Não é nada para se preocupar, não há nada de malicioso na existência deste diretório, e ele pode simplesmente ser deletado se sua presença for ofensiva à estética ou aos scanners de segurança.