Carpeta desconocida en la raíz del sistema /.rpmdb

16

¿Alguien puede explicar para qué sirve la carpeta /.rpmdb en el directorio raíz? ¿Qué aplicación lo crea y lo está usando?

BSimulj
fuente

Respuestas:

11

No puedo decir definitivamente qué crea este directorio, pero es probable que se cree como un efecto secundario de la instalación de controladores de kernel de Linux de terceros como NVIDIA o VirtualBox usando DKMS , o por algún otro script de instalador no compatible no proporcionado por Ubuntu Este directorio probablemente se creó como un efecto secundario de un proceso de instalación que admite distribuciones basadas en rpm y deb. DKMS es un script de instalación y definitivamente puede crear este directorio en las condiciones adecuadas. El directorio se puede eliminar de forma segura sin dañar su sistema, pero se puede volver a crear cuando se instalen las actualizaciones más adelante. Consulte el error n. ° 1069350 para obtener un informe de error abierto que rastrea este problema.

Esa es la respuesta corta, ahora algunos detalles más.

¿Qué es .rpmdb?

Como ya sabrá, rpm es un formato de paquete de software y un conjunto de herramientas para instalar paquetes y mantener la base de datos de paquetes instalados y sus interdependencias. Es utilizado por muchas distribuciones pero no por Ubuntu y otras distribuciones basadas en deb. Desafortunadamente para Ubuntu, sin embargo, cualquier uso del rpmcomando requiere una base de datos "rpmdb" válida para existir o ser creada.

En distribuciones basadas en rpm esto no es un problema porque tienen un rpmdb en todo el sistema por definición. En los sistemas Ubuntu, dado que no hay necesidad de una base de datos rpm en todo el sistema, rpmse configura para usar una base de datos bajo el directorio de inicio de cada usuario, específicamente $HOME/.rpmdb. Esta base de datos se crea silenciosamente según sea necesario cada vez que se rpmejecuta. Como se encuentra en el directorio de inicio de cada usuario, no hay problemas con los permisos compartidos ni con la necesidad de que un administrador cree la base de datos. Cada usuario solo obtiene su propia base de datos privada de rpm vacía.

¿Por qué se ejecutarían rpm en Ubuntu?

Resulta que a algunos proyectos les gusta crear scripts de instalación que funcionen en cualquier distribución, ya sea que esa distribución esté basada en rpm, deb o no. DKMS es uno de esos proyectos, permite que se construyan controladores de terceros para cualquier kernel de Linux que esté ejecutando un sistema, y ​​está escrito para funcionar en todas las distribuciones. En parte de su lógica para determinar en qué distribución se está ejecutando y qué versión del núcleo está presente, ejecuta un rpmcomando para consultar la base de datos. Como expliqué anteriormente, esto creará un .rpmdbdirectorio en silencio si aún no existe uno en el directorio de inicio del usuario actual. La consulta de la base de datos debería fallar, ya que Ubuntu no es una distribución basada en rpm, y DKMS continúa.

Si instala algún paquete adicional de controladores de kernel de Linux desde Ubuntu como VirtualBox, NVIDIA, ndiswrapper o openswan, probablemente esté utilizando DKMS para instalar esos controladores para su kernel. Esto normalmente se hace automáticamente cuando el controlador se instala desde los repositorios de Ubuntu. Por lo tanto, cada vez que se instala una actualización del núcleo o del controlador, DKMS se ejecuta nuevamente para reconstruir el controlador para todas las versiones disponibles del núcleo. Se ha demostrado que cuando se actualizan esos paquetes, el /root/.rpmdbdirectorio aparece de hecho, que está en el directorio de inicio de la raíz ya que se requiere root para instalar las actualizaciones.

No conozco otros scripts de instalación de terceros específicos que también puedan ejecutar rpmcomandos como una forma de detectar el tipo de distribución, pero ciertamente es posible. Por ejemplo, es posible que desee instalar LargeProprietaryProgram desde Initech y, para hacerlo, ejecute un install.shscript como root. Este script puede intentar consultar una base de datos rpm para ver si está ejecutando una distribución basada en rpm, y /root/.rpmdbse crea nuevamente.

Eso explica por qué puede ver /home/user/.rpmdby los /root/.rpmdbdirectorios aparecen en su sistema. Pero, ¿por qué en el directorio raíz del sistema?

¿Por qué se crea .rpmdb en el directorio raíz?

La explicación más fácil para esto es que la $HOMEvariable de entorno no está configurada de alguna manera en algún contexto de proceso que se ejecuta rpm. Usemos DKMS por razones de argumento porque definitivamente sabemos que puede ejecutar rpmcomandos. Debido a que generalmente se ejecuta cuando los paquetes se instalan o actualizan, se ejecuta en el entorno de cualquier administrador de paquetes que utilice. Si utiliza sudo apt-getpara instalar paquetes, heredará una correcta $HOME. Si usa PackageKit, es posible que no tenga una $HOMEvariable en absoluto. No estoy seguro de qué entorno proporciona Synaptic o Ubuntu Software Center.

Entonces, si DKMS se ejecuta en un entorno que no tiene una $HOMEvariable, y debido a la forma en que se definió la base de datos rpm, se creará una base de datos rpm vacía en /.rpmdblugar de /root/.rpmdb. Esto se ha solucionado en el rpmpaquete para Ubuntu en la versión de desarrollo 14.10, por lo que ahora debería crear /root/.rpmdbincluso si $HOMEno está definido.

Espero que esto explique por qué hay directorios llamados .rpmdben absoluto en un sistema Ubuntu, por qué pueden crearse aparentemente de forma automática y por qué uno puede crearse en el directorio raíz bajo el conjunto correcto de condiciones. No hay nada de qué preocuparse, no hay nada malicioso en la existencia de este directorio, y simplemente se puede eliminar si su presencia es ofensiva para la estética o los escáneres de seguridad.

Mike Miller
fuente
-1

RPM (Red Hat Package Manager) es un sistema de gestión de paquetes. Su RPM fue originalmente escrito en 1997 por Erik Troan y Marc Ewing para su uso en Red Hat Linux, pero ahora se usa en muchas distribuciones de GNU / Linux.

Trabajando detrás de escena del administrador de paquetes está la base de datos RPM ( RPMDB ), almacenada en /var/lib/rpm. Consiste en una única base de datos (Paquetes) que contiene toda la metainformación de los rpms instalados . La base de datos se usa para realizar un seguimiento de todos los archivos que se cambian y crean cuando un usuario (usando RPM) instala un paquete , lo que permite al usuario (a través de RPM) revertir los cambios y eliminar el paquete más tarde.


Referencia: http://en.wikipedia.org/wiki/RPM_Package_Manager

Lucio
fuente
44
¿Cómo es esto relevante para explicar por /.rpmdbqué aparecería en un sistema Ubuntu (que no usa rpm)?
Gilles 'SO- deja de ser malvado'
1
quizás usadoalien
jet