Dossier inconnu à la racine du système /.rpmdb

16

Quelqu'un peut-il expliquer à quoi sert le dossier /.rpmdb dans le répertoire racine? Quelle application le crée et l'utilise?

BSimulj
la source

Réponses:

11

Je ne peux pas dire définitivement ce qui crée ce répertoire, mais il est probable qu'il soit créé soit comme effet secondaire de l'installation de pilotes de noyau Linux tiers tels que NVIDIA ou VirtualBox à l'aide de DKMS , soit par un autre script d'installation non pris en charge non fourni par Ubuntu. Ce répertoire a probablement été créé comme effet secondaire d'un processus d'installation qui prend en charge les distributions basées sur rpm et deb. DKMS se trouve être un tel script d'installation et peut certainement créer ce répertoire dans les bonnes conditions. Le répertoire peut être supprimé en toute sécurité sans endommager votre système, mais il peut être recréé lors de l'installation ultérieure des mises à jour. Voir le bogue # 1069350 pour un rapport de bogue ouvert qui suit ce problème.

Voilà la réponse courte, maintenant un peu plus de détails.

Qu'est-ce que .rpmdb?

Comme vous le savez peut-être, rpm est un format de package logiciel et un ensemble d'outils pour installer des packages et maintenir la base de données des packages installés et leurs interdépendances. Il est utilisé par de nombreuses distributions mais pas par Ubuntu et d'autres distributions basées sur deb. Malheureusement pour Ubuntu, cependant, toute utilisation de la rpmcommande nécessite l'existence ou la création d'une base de données "rpmdb" valide.

Sur les distributions basées sur rpm, ce n'est pas un problème car elles ont un rpmdb à l'échelle du système par définition. Sur les systèmes Ubuntu, puisqu'il n'y a pas besoin d'une base de données RPM à l'échelle du système, rpmest configuré pour utiliser une base de données sous le répertoire personnel de chaque utilisateur, en particulier $HOME/.rpmdb. Cette base de données est créée silencieusement selon les besoins à chaque rpmexécution. Comme il se trouve dans le répertoire personnel de chaque utilisateur, il n'y a aucun problème avec les autorisations partagées ou nécessitant la création de la base de données par un administrateur. Chaque utilisateur obtient juste sa propre base de données vide privée rpm.

Pourquoi le rpm serait-il exécuté sur Ubuntu?

Il s'avère que certains projets aiment créer des scripts d'installation qui fonctionneront sur n'importe quelle distribution, que cette distribution soit basée sur rpm, deb ou aucune. DKMS est un de ces projets, il permet de construire des pilotes tiers pour tout noyau Linux qu'un système exécute, et il est écrit pour fonctionner sur toutes les distributions. Dans une partie de sa logique pour déterminer sur quelle distribution il s'exécute et sur quelle version de noyau est présente, il exécute une rpmcommande pour interroger la base de données. Comme je l'ai expliqué précédemment, cela créera silencieusement un .rpmdbrépertoire s'il n'en existe pas déjà dans le répertoire personnel de l'utilisateur actuel. La requête de base de données devrait échouer, car Ubuntu n'est pas une distribution basée sur rpm et DKMS continue.

Si vous installez des packages de pilotes de noyau Linux supplémentaires à partir d'Ubuntu tels que VirtualBox, NVIDIA, ndiswrapper ou openswan, vous utilisez probablement DKMS pour installer ces pilotes pour votre noyau. Cela se fait généralement automatiquement lorsque le pilote est installé à partir des référentiels Ubuntu. Ainsi, chaque fois qu'une mise à jour du noyau ou du pilote est installée, DKMS s'exécute à nouveau pour reconstruire le pilote pour toutes les versions de noyau disponibles. Il a été démontré que lorsque ces packages sont mis à jour, le /root/.rpmdbrépertoire apparaît en fait, qui se trouve dans le répertoire personnel de root, car root est requis pour installer les mises à jour.

Je ne connais aucun autre script d'installation tiers spécifique qui puisse également exécuter des rpmcommandes pour détecter le type de distribution, mais c'est certainement possible. Par exemple, vous souhaiterez peut-être installer LargeProprietaryProgram depuis Initech, et pour ce faire, vous exécuterez un install.shscript en tant que root. Ce script peut essayer d'interroger une base de données rpm pour voir si vous exécutez une distribution basée sur rpm et /root/.rpmdbest à nouveau créé.

Alors , ce qui explique pourquoi vous pouvez voir /home/user/.rpmdbet /root/.rpmdbrépertoires apparaître sur votre système. Mais pourquoi dans le répertoire racine du système?

Pourquoi .rpmdb est-il créé dans le répertoire racine?

L'explication la plus simple est que la $HOMEvariable d'environnement n'est pas définie d'une manière ou d'une autre dans un contexte de processus qui s'exécute rpm. Utilisons DKMS à des fins d'argument car nous savons définitivement qu'il peut exécuter des rpmcommandes. Parce qu'il s'exécute généralement lorsque les packages sont installés ou mis à jour, il s'exécute dans l'environnement du gestionnaire de packages que vous utilisez. Si vous utilisez sudo apt-getpour installer des packages, il héritera d'un correct $HOME. Si vous utilisez PackageKit, il peut ne pas avoir de $HOMEvariable du tout. Je ne sais pas quel environnement est fourni par Synaptic ou Ubuntu Software Center.

Donc, si DKMS s'exécute dans un environnement qui n'a pas de $HOMEvariable, et en raison de la façon dont la base de données rpm a été définie, une base de données rpm vide sera créée à la /.rpmdbplace de /root/.rpmdb. Cela a été corrigé dans le rpmpackage pour Ubuntu dans la version de développement 14.10, il devrait donc maintenant créer /root/.rpmdbmême s'il $HOMEn'est pas défini.

J'espère que cela explique pourquoi il existe des répertoires appelés .rpmdbsur un système Ubuntu, pourquoi ils peuvent être créés apparemment automatiquement et pourquoi un peut être créé dans le répertoire racine dans le bon ensemble de conditions. Il n'y a rien à craindre, il n'y a rien de malveillant dans l'existence de ce répertoire, et il peut simplement être supprimé si sa présence est offensante pour les scanners esthétiques ou de sécurité.

Mike Miller
la source
-1

RPM (Red Hat Package Manager) est un système de gestion de packages. Ce RPM a été initialement écrit en 1997 par Erik Troan et Marc Ewing pour être utilisé dans Red Hat Linux, mais est maintenant utilisé dans de nombreuses distributions GNU / Linux.

La base de données RPM ( RPMDB ), stockée dans, travaille dans les coulisses du gestionnaire de packages /var/lib/rpm. Il se compose d'une seule base de données (packages) contenant toutes les méta-informations des rpms installés . La base de données est utilisée pour garder une trace de tous les fichiers modifiés et créés lorsqu'un utilisateur (utilisant RPM) installe un package , permettant ainsi à l'utilisateur (via RPM) d'annuler les modifications et de supprimer le package ultérieurement.


Référence: http://en.wikipedia.org/wiki/RPM_Package_Manager

Lucio
la source
4
En quoi est-ce pertinent pour expliquer pourquoi /.rpmdbapparaîtrait sur un système Ubuntu (qui n'utilise pas rpm)?
Gilles 'SO- arrête d'être méchant'
1
peut-être utiliséalien
jet